要使用JSONObject和JSONArray,必须添加以下jar包:
commons-beanutils.jar
commons-collections.jar
commons-lang.jar
commons-logging.jar
ezmorph.jar
json-lib.jar
publicclassjsontest { publicstaticvoidmain (string args [ ] ) JSONObject对象jsonobjectjsonobject=newjsonobject ); Jonobject.put(key1,value1); Jonobject.put(key2)、value2); Jonobject.put(key3,value3); Jonobject.put(key4,value4); system.out.println (JSON对象: ) JSON对象); JSONArray对象jsonarrayjsonarray=newjsonarray (); JonArray.add(value1); JonArray.add(value2); JonArray.add(value3); JonArray.add(value4); 系统. out.println (JSONArray : ) JSON array ); //Map为JSONObjectMapString,String map=new HashMapString,String (; map.put('key1)、' value1); map.put(key2)、) value2); map.put(key3 )、) value3); map.put('key4)、' value4); 系统. out.println (JSON object 2: ) JSONobject.fromobject(map ); //List表示jsonarrayliststringlist=newarrayliststring (; list.add(value1); list.add(value2); list.add(value3); system.out.println (JSON array 23360 ) JSONArray.fromobject ) list ); //JsonArray分析map并将整个json对象放入数组中。 system.out.println (jsonarrayfrommap 3360 ) JSON array.from object (map ) ); 将JSONObject转换为jsonarrayjsonobjectjsonobject3=newjsonobject (); jsonObject3.put (名字,粗笨的鸵鸟); jsonObject3.put ('年龄',' 13 ' ); jsonObject3.put ('身高',' 166 ' ); system.out.println('JSONobject为JSON array : ' JSON array.from object ) JSONObject ); }
打印结果:
Jon object 3360 { ' key4' : ' value4',' key3':'value3',' key2':'value2',' key1' : ' value1'
jsonArray:['value1'、' value2'、' value3'、' value4']
Jon object 2: { ' key4' : ' value4',' key3':'value3',' key2':'value2',' key1' : ' value 1
jsonArray2:['value1'、' value2'、' value3']
jonarrayfrommap : [ { ' key4' : ' value4',' key3':'value3',' key2': ',' key1':']
将JSONObject列入JsonArray:[{ '姓名' : '粗疏鸵鸟','身高' :'166 ','年龄' :'13'}]
以下总结了put、accumulate、element的差异。
publicobjectput (对象密钥,对象值) )将值映射到密钥下。 如果value在此JSONObject对象之前位于此key下,则当前value将替换前面的value
jsonobjectjsonobject=newjsonobject (; Jonobject.put(key1,value1); Jonobject.put(key2)、value2); Jonobject.put(key2)、value2); Jonobject.put(key4,value4); system.out.println (JSON对象: ) JSON对象);
输出: JSON object : { ' key4' : ' value4'、' key2':'value2'、' key1':'value1'}表明key2已被覆盖
publicjsonobjectaccumulate (字符串密钥,对象值) )在该密钥下累积值。 此方法与element ) )方法类似,但是如果value当前存在于此key下,则JSONArray将保存在此key中,并保存所有累积的value。 如果JSONArray已存在,则将当前value添加到此JSONArray中。 相比之下,replace方法将替换以前的value。 代码如下
jsonobjectjsonobject=newjsonobject (; Jonobject.accumulate('key1',' value1); Jonobject.accumulate('key2)、' value2); Jonobject.accumulate('key2)、' value2); Jonobject.accumulate('key4',' value4); system.out.println (JSON对象: ) JSON对象);
输出: JSON object : { ' key4' : ' value4',' key2':['value2',' value2'],' key1':'value1'},累积
publicjsonobjectelement (字符串键,对象值) )将键-值对置于此JSON对象中。 如果此key存在,且当前值为空,则此key将被删除。 如果此key前面有value值,则此方法调用accumulate ()方法。 这是官方文档的一种说法,但我们在做实验时发现,没有调用accumulate ()方法,重复key后可以直接覆盖。 代码如下。
jsonobjectjsonobject=newjsonobject (; JSONobject.element('key1',' value1); JSONobject.element('key2',' value2' ); JSONobject.element('key2',' value2' ); JSONobject.element('key2',' value4); system.out.println (JSON对象: ) JSON对象); 输出: JSON object : { ' key2' : ' value4',' key1':'value1'},key已覆盖且未累积。
真的项目中的代码:
JSON array JSON array=new JSON array (; span style=' white-space : pre '/span for (string temp : unique set (jsonobjectjson=newjsonobject ); JSON.accumulate('saccount ',temp ); JSON.accumulate('num ',collections.Frequency ) ) cardnumlist,temp ); JSONArray.Element(JSON; }system.out.println(JSONArray ); response.getWriter ().print ) ) JSONArray;