申明:没工作之前都没听过JSON,可能是自己太菜了。可能在前台AJAX接触到JSON,这几天要求在纯java的编程中,返回JSON字符串形式。
网上有两种解析JSON对象的jar包:JSON-lib.jar和json.jar,这里主要介绍JSON-lib.jar。
jar包地址如下:
一、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实例考虑到对[]、{}进行对比,区别重复的变量,对变量名进行了首字母大写,显得不规范了。
importnet.sf.json.JSONArray;importnet.sf.json.JSONObject;public classJSONTest {public static voidmain(String[] args) {
JSONObject container1= newJSONObject();
container1.put("ClassName", "高三一班");
System.out.println(container1.toString());
JSONArray className= newJSONArray();
className.add("高三一班");
container1.put("className", className);
System.out.println(container1.toString());
JSONObject classInfo= newJSONObject();
classInfo.put("stuCount", 50);
classInfo.put("leader", "rah");
container1.put("classInfo", classInfo);
System.out.println(container1);
JSONObject ClassInfo= newJSONObject();
JSONArray stuCount= newJSONArray();
stuCount.add(50);
JSONArray leader= newJSONArray();
leader.add("rah");
ClassInfo.put("stuCount", stuCount);
ClassInfo.put("leader", leader);
container1.put("ClassInfo", ClassInfo);
System.out.println(container1);
JSONArray students= newJSONArray();
JSONObject studentOne= newJSONObject();
studentOne.put("name", "张麻子");
studentOne.put("sex", "男");
studentOne.put("age", 12);
studentOne.put("hobby", "java develop");
JSONObject studentTwo= newJSONObject();
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);
System.out.println(container1);
JSONArray Students= newJSONArray();
JSONObject StudnetOne= newJSONObject();
JSONArray name1= newJSONArray();
name1.add("张麻子");
JSONArray sex1= newJSONArray();
sex1.add("男");
JSONArray age1= newJSONArray();
age1.add("12");
JSONArray hobby1= newJSONArray();
hobby1.add("java develop");
StudnetOne.put("name", name1);
StudnetOne.put("sex", sex1);
StudnetOne.put("age", age1);
StudnetOne.put("hobby", hobby1);
JSONObject StudnetTwo= newJSONObject();
JSONArray name2= newJSONArray();
name2.add("王瘸子");
JSONArray sex2= newJSONArray();
sex2.add("男");
JSONArray age2= newJSONArray();
age2.add("13");
JSONArray hobby2= newJSONArray();
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);
container1.put("Students", Students);
System.out.println(container1);
JSONArray teachers= newJSONArray();
teachers.add(0,"王老师");
teachers.add(1,"李老师 ");
container1.put("teachers", teachers);
System.out.println(container1);
JSONArray Teachers= newJSONArray();
JSONObject teacher1= newJSONObject();
teacher1.put("name", "小梅");
teacher1.put("introduce","他是一个好老师");
JSONObject teacher2= newJSONObject();
teacher2.put("name", "小李");
teacher2.put("introduce","他是一个合格的老师");
Teachers.add(0,teacher1);
Teachers.add(1,teacher2);
container1.put("Teachers", Teachers);
System.out.println(container1);
}
}
运行结果:
{"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");
System.out.println("className data is: " +className1);
JSONObject classInfo1= container1.getJSONObject("classInfo");
System.out.println("classInfo data is: " +classInfo1);
JSONObject ClassInfo1= container1.getJSONObject("ClassInfo");
System.out.println("ClassInfo data is: " +ClassInfo1);
JSONArray students1= container1.getJSONArray("students");
System.out.println("students data is: " +students1);
JSONArray Students1= container1.getJSONArray("Students");
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));
}
JSONArray Teachers1= container1.getJSONArray("Teachers");for(int i=0; i < Teachers1.size(); 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"]}]
teahcer0is: 王老师
teahcer1is: 李老师
Teachers0 is: {"name":"小梅","introduce":"他是一个好老师"}
Teachers1 is: {"name":"小李","introduce":"他是一个合格的老师"}
上面包括了大部份的JSON的嵌套形式,可能有忽略的也可以参考上面的内容。