创建JSONArray的四种常见方法
1 .从头开始或从头开始创建JSON阵列(创建jsonarrayfromscratch )
实例1 :
Java代码
JSON array JSON array=new JSON array ().element ()、JSON ()、element ()、element ()、element ()、true ) )。
assertequals('JSON ',jsonArray.getString(0) )0);
资产质量(1,jsonArray.getInt(1) 1;
资产质量(2.0d,jsonArray.getDouble(2)2),0d );
资产真(JSON array.get boolean (3) );
使用Collection创建JSON阵列(creatingajsonarrayfromacollection )
实例1 :
Java代码
列表列表=new ArrayList (;
list.add(JSON );
list.add('1);
list.add(2.0 );
list.add('true );
JSONArrayJSONArray=(JSONArray ) JSONserializer.toJSON )列表; assertequals('JSON ',jsonArray.getString(0) )0);
资产质量(1,jsonArray.getInt(1) 1;
资产质量(2.0d,jsonArray.getDouble(2)2),0d );
资产真(JSON array.get boolean (3) );
使用阵列创建JSON阵列(creatingajsonarrayfromanarray )
实例1 :
Java代码
object [ ] array=new object [ ] { ' JSON ',1,2.0,true };
JSONArrayJSONArray=(JSONArray ) JSON serializer.to JSON array; assertequals('JSON ',jsonArray.getString(0) )0);
资产质量(1,jsonArray.getInt(1) 1;
资产质量(2.0d,jsonArray.getDouble(2)2),0d );
资产真(JSON array.get boolean (3) );
//实例2 :
object [ ] array=new object [ ] { ' JSON ',1,2.0,true };
jsonarrayjsonarray=JSON array.from object (array;
assertequals('JSON ',jsonArray.getString(0) )0);
资产质量(1,jsonArray.getInt(1) 1;
资产质量(2.0d,jsonArray.getDouble(2)2),0d );
资产真(JSON array.get boolean (3) );
因此,无论要转换的源是什么类型,都可以使用((JSONArray ) JSONSerializer.toJSON ) )或JSONArray.fromObject )进行转换。
常用的三种扩展功能
使用JSON格式字符串创建JSON函数(JavaScript functions )
实例:
Java代码
stringstr=' { func : function (param ) ) dosomethingwithparam ); } ();
jsonobjectjsonobject=(JSON object ) JSONserializer.toJSON ) str; JSONfunctionfunc=(JSONfunction ) JSONobject.get ) (func ); array assertions.assert equals (new string [ ] { ' param ' },func.getParams ) );
资产质量; ' dosomethingwithparam;' 、func.getText ();
注:函数的写法要注意function(){},参数param是可选的!2.排除一个JSON格式化字符串的某些属性(Exclude properties)
实例:
Java代码
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[] { "double", "boolean" }); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str, jsonConfig);
assertEquals("JSON", jsonObject.getString("string"));
assertEquals(1, jsonObject.getInt("integer"));
assertFalse(jsonObject.has("double"));
assertFalse(jsonObject.has("boolean"));
3.排除一个JSON格式化字符串的某些属性,使用过滤器(Exclude properties (with filters)
实例:
Java代码
String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.setJsonPropertyFilter(new PropertyFilter() {
public boolean apply(Object source, String name, Object value) {
if ("double".equals(name) || "boolean".equals(name))
{ return true; }
return false; } });
JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str, jsonConfig);
assertEquals("JSON", jsonObject.getString("string"));
assertEquals(1, jsonObject.getInt("integer"));
assertFalse(jsonObject.has("double"));
assertFalse(jsonObject.has("boolean"));
JSONObject-Java常用的四种用法
1.JSONObject to DynaBean
Java代码
String json = "{name="json",bool:true,int:1,double:2.2}"; JSONObject jsonObject = JSONObject.fromObject(json); //抽象的写法:DynaBean bean = (DynaBean) JSONSerializer.toJava( jsonObject ); Object bean = JSONObject.toBean(jsonObject);
//Object bean1 = JSONSerializer.toJava(jsonObject);
assertEquals(jsonObject.get("name"), PropertyUtils.getProperty(bean, "name"));
assertEquals(jsonObject.get("bool"), PropertyUtils.getProperty(bean, "bool"));
assertEquals(jsonObject.get("int"), PropertyUtils.getProperty(bean, "int"));
assertEquals(jsonObject.get("double"), PropertyUtils.getProperty(bean, "double"));
2.JSONObject to JavaBean
Java代码
String json = "{name:"zhangsan",age:25,hight:1.72,sex:true}"; JSONObject jsonObject = JSONObject.fromObject(json);
UserBean bean = (UserBean) JSONObject.toBean(jsonObject, UserBean.class);
System.out.println(jsonObject);
3.JSONArray to List
Java代码
String json = "["first","second"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json);
List output = (List) JSONSerializer.toJava(jsonArray);
4.JSONArray to array
Java代码
String json = "["first","second"]";
JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON(json); JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setArrayMode(JsonConfig.MODE_OBJECT_ARRAY);
Object[] output = (Object[]) JSONSerializer.toJava(jsonArray, jsonConfig);
Object[] expected = new Object[] { "first", "second" }; ArrayAssertions.assertEquals(expected, output);
理论上,这样就可以了,但时,有异常Caused by: java.lang.NoSuchMethodException: com.json.Json$UserBean.<init>()
2.使用一个JSON格式化字符串来创建一个JSONArray(Creating a JSONArray from a JSON formatted string)
实例1:
Java代码
String str = "['JSON', 1, 2.0, true]"; //注意该字符串的格式"[ , ]" JSONArray jsonArray = (JSONArray) JSONSerializer.toJSON( str ); assertEquals( "JSON", jsonArray.getString(0) );
assertEquals( 1, jsonArray.getInt(1) );
assertEquals( 2.0d, jsonArray.getDouble(2), 0d );
assertTrue( jsonArray.getBoolean(3) );
Java代码
List<String> list = new ArryList<String>(); list.add("a"); list.add("b"); Map<String,List<String>> map = new HashMap<String,List<String>>(); map.put("list",list); MessageUtils.outputJSONResult(JSONObject.fromObject(map).toString(), response); public class MessageUtils { public static void outputJSONResult(String result, HttpServletResponse response) { try { response.setHeader("ContentType", "text/json"); response.setCharacterEncoding("utf-8"); PrintWriter pw = response.getWriter(); pw.write(result); pw.flush(); pw.close(); } catch (IOException e) { e.printStackTrace(); } }