使用 json-lib.jar 解析json

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字符串

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焱宣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值