網上有兩種解析json對象的jar包:json-lib.jar和json.jar,這裡主要介紹json-lib.jar。
jar包位址如下:
json-lib-2.4-jdk15.jar所需全部jar包.rar
一、json-lib.jar還依賴以下jar包:
commons-lang.jar
commons-beanutils.jar
commons-collections.jar
commons-logging.jar
ezmorph.jar
json-lib-2.2.2-jdk15.jar
二、應用
json也是以key-value形式存在的。key是字元串,value可以是基本類型、jsonarray、jsonobject.
jsonarray:[],望文生義也知道,他是數組形式,又可要放多個json
jsonobject:{}就放一個json。
由于他們的他們可以嵌套形式就比較多。
三、輸出json執行個體考慮到對[]、{}進行對比,差別重複的變量,對變量名進行了首字母大寫,顯得不規範了。
import net.sf.json.jsonarray;
import net.sf.json.jsonobject;
public class jsontest {
public static void main(string[] args) {
jsonobject container1 = new jsonobject();
container1.put("classname", "高三一班");
system.out.println(container1.tostring());
jsonarray classname = new jsonarray();
classname.add("高三一班");
container1.put("classname", classname);
jsonobject classinfo = new jsonobject();
classinfo.put("stucount", 50);
classinfo.put("leader", "rah");
container1.put("classinfo", classinfo);
system.out.println(container1);
jsonarray stucount = new jsonarray();
stucount.add(50);
jsonarray leader = new jsonarray();
leader.add("rah");
classinfo.put("stucount", stucount);
classinfo.put("leader", leader);
jsonarray students = new jsonarray();
jsonobject studentone = new jsonobject();
studentone.put("name", "張麻子");
studentone.put("sex", "男");
studentone.put("age", 12);
studentone.put("hobby", "java develop");
jsonobject studenttwo = new jsonobject();
studenttwo.put("name", "王瘸子");
studenttwo.put("sex", "男");
studenttwo.put("age", 13);
studenttwo.put("hobby", "c/c++ develop");
students.add(studentone);
students.add(studenttwo);
container1.put("students", students);
jsonobject studnetone = new jsonobject();
jsonarray name1 = new jsonarray();
name1.add("張麻子");
jsonarray sex1 = new jsonarray();
sex1.add("男");
jsonarray age1= new jsonarray();
age1.add("12");
jsonarray hobby1 = new jsonarray();
hobby1.add("java develop");
studnetone.put("name", name1);
studnetone.put("sex", sex1);
studnetone.put("age", age1);
studnetone.put("hobby", hobby1);
jsonobject studnettwo = new jsonobject();
jsonarray name2 = new jsonarray();
name2.add("王瘸子");
jsonarray sex2 = new jsonarray();
sex2.add("男");
jsonarray age2= new jsonarray();
age2.add("13");
jsonarray hobby2 = new jsonarray();
hobby2.add("c/c++ develop");
studnettwo.put("name", name2);
studnettwo.put("sex", sex2);
studnettwo.put("age", age2);
studnettwo.put("hobby", hobby2);
students.add(studnetone);
students.add(studnettwo);
jsonarray teachers = new jsonarray();
teachers.add(0,"王老師");
teachers.add(1,"李老師 ");
container1.put("teachers", teachers);
jsonobject teacher1 = new jsonobject();
teacher1.put("name", "小梅");
teacher1.put("introduce","他是一個好老師");
jsonobject teacher2 = new jsonobject();
teacher2.put("name", "小李");
teacher2.put("introduce","他是一個合格的老師");
teachers.add(0,teacher1);
teachers.add(1,teacher2);
}
運作結果:
{"classname":"高三一班"}
{"classname":"高三一班","classname":["高三一班"]}
{"classname":"高三一班","classname":["高三一班"],"classinfo":{"stucount":50,"leader":"rah"}}
{"classname":"高三一班","classname":["高三一班"],"classinfo":{"stucount":50,"leader":"rah"},"classinfo":{"stucount":[50],"leader":["rah"]}}
{"classname":"高三一班","classname":["高三一班"],"classinfo":{"stucount":50,"leader":"rah"},"classinfo":{"stucount":[50],"leader":["rah"]},"students":[{"name":"張麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"c/c++ develop"}]}
{"classname":"高三一班","classname":["高三一班"],"classinfo":{"stucount":50,"leader":"rah"},"classinfo":{"stucount":[50],"leader":["rah"]},"students":[{"name":"張麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"c/c++ develop"}],"students":[{"name":["張麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["c/c++ develop"]}]}
{"classname":"高三一班","classname":["高三一班"],"classinfo":{"stucount":50,"leader":"rah"},"classinfo":{"stucount":[50],"leader":["rah"]},"students":[{"name":"張麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"c/c++ develop"}],"students":[{"name":["張麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["c/c++ develop"]}],"teachers":["王老師","李老師 "]}
{"classname":"高三一班","classname":["高三一班"],"classinfo":{"stucount":50,"leader":"rah"},"classinfo":{"stucount":[50],"leader":["rah"]},"students":[{"name":"張麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"c/c++ develop"}],"students":[{"name":["張麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["c/c++ develop"]}],"teachers":["王老師","李老師 "],"teachers":[{"name":"小梅","introduce":"他是一個好老師"},{"name":"小李","introduce":"他是一個合格的老師"}]}
四、周遊json執行個體
以上面的輸出的json字元串進行按順序給它周遊
string classname1 = (string) container1.get("classname");
system.out.println("classname data is: " + classname1);
jsonarray classname1 = container1.getjsonarray("classname");
jsonobject classinfo1 = container1.getjsonobject("classinfo");
system.out.println("classinfo data is: " + classinfo1);
jsonarray students1 = container1.getjsonarray("students");
system.out.println("students data is: " + students1);
system.out.println("students data is: " + students1);
jsonarray teachers1 = container1.getjsonarray("teachers");
for(int i=0; i < teachers1.size(); i++){
system.out.println("teahcer " + i + " is: "+ teachers1.get(i));
}
system.out.println("teachers " + i + " is: "+ teachers1.get(i));
周遊結果:
classname data is: 高三一班
classname data is: ["高三一班"]
classinfo data is: {"stucount":50,"leader":"rah"}
classinfo data is: {"stucount":[50],"leader":["rah"]}
students data is: [{"name":"張麻子","sex":"男","age":12,"hobby":"java develop"},{"name":"王瘸子","sex":"男","age":13,"hobby":"c/c++ develop"}]
students data is: [{"name":["張麻子"],"sex":["男"],"age":["12"],"hobby":["java develop"]},{"name":["王瘸子"],"sex":["男"],"age":["13"],"hobby":["c/c++ develop"]}]
teahcer 0 is: 王老師
teahcer 1 is: 李老師
teachers 0 is: {"name":"小梅","introduce":"他是一個好老師"}
teachers 1 is: {"name":"小李","introduce":"他是一個合格的老師"}
上面包括了大部份的json的嵌套形式,可能有忽略的也可以參考上面的内容。
最新内容請見作者的github頁:http://qaseven.github.io/