1.在工程目录下引用 json-lib.jar包,并通过右键点击 Add as Library实现jar包的导入:
2. json:轻量级数据交换格式,应用场景:用于数据的传输,json数据有两种表示形式:1.最外层以{ }表示----对象,2.最外层以[ ]表示----数组
json的本质:符合键值对规则的字符串: 对象:{"name":"zs","age":30} 数组:[{"name":"zs","age":"30"},{"name":"ls","age":"40"}]
json解析的目的:往往json数据的key为已知的,根据key将存储的value值获取到
案例:解析外层为{}的简单json数据------jsonObject
//案例1:解析外层为{}的简单的json数据
/*String data = "{'name':'zs','age':30}";
//实例化JsonObject对象,将json数据源传入
JSONObject obj = new JSONObject(data);
//System.out.println(obj.getString("name")); //zs
//System.out.println(obj.getInt("age")); //30
Student st = new Student(obj.getString("name"), obj.getInt("age"));
System.out.println(st);
*/
解析外层为{ }的嵌套的json数据-------JsonObject
//案例2: 解析外层为{}的嵌套的json数据
/*String data = "{'name':'zs','age':30,'score':{'eng':66,'chi':88}}";
JSONObject obj = new JSONObject(data);
Student st = new Student(obj.getString("name"), obj.getInt("age"));
JSONObject obj2 = obj.getJSONObject("score"); //根据score获取到内层的JsonObject
Score score = new Score(obj2.getInt("eng"), obj2.getInt("chi"));
st.setScore(score); //将分数设置到学生的属性中
System.out.println(st);
*/
解析外层为[ ]的json数据------JsonArray
//案例3: 解析外层为[]的json数据--------JsonArray
String data = "[{'name':'zs','age':30,'score':{'eng':66,'chi':88}},"
+ "{'name':'ls','age':40,'score':{'eng':55,'chi':96}}]";
//实例化JsonArray数组,传入json数据源
JSONArray array = new JSONArray(data);
List<Student> list = new ArrayList<>(); //实例化集合
for(int i=0;i<array.length();i++){
JSONObject obj = array.getJSONObject(i); //获取数组的元素
//后续的与案例2完全一致.........
Student st = new Student(obj.getString("name"), obj.getInt("age"));
JSONObject obj2 = obj.getJSONObject("score"); //根据score获取到内层的JsonObject
Score score = new Score(obj2.getInt("eng"), obj2.getInt("chi"));
st.setScore(score); //将分数设置到学生的属性中
list.add(st); //将学生对象存储到集合
}
System.out.println(list); //打印集合
已知对象,生成json数据:
//案例4:已知对象,生成json数据
/*Student st = new Student("zsf", 30);
st.setScore(new Score(56, 78));
JSONObject object = new JSONObject(st);
System.out.println(object.toString()); //得到json字符串
*/
已知数组和集合,生成json数据:
//案例5:已知数组或集合,生成json数据
List<Student> list = new ArrayList<>();
list.add(new Student("zxs", 23));
list.add(new Student("lxs", 24));
JSONArray array = new JSONArray(list);
System.out.println(array.toString()); //得到json字符串