java简单解析json

一、什么是JSON?
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。

JSON就是一串字符串 只不过元素会使用特定的符号标注。

{} 双括号表示对象

[] 中括号表示数组

"" 双引号内是属性或值

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象

而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组

当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象

json例子:

{
	    "resultcode":"200",
	    "reason":"成功的返回",
	    "result":{
		"company":"EMS",
		"com":"sf",
		"no":"575677355677",
		"list":[
		    {
			"datetime":"2018-01-01 10:10:10",
			"remark":"已收件",
			"zone":"深圳市"
		    },
		    {
			"datetime":"2018-01-02 01:00:00",
			"remark":"快件在 深圳 ,准备送往下一站 武汉集散中心 ",
			"zone":"武汉市"
		    }
		],
		"status":1
	    },
	    "error_code":0
}

解析代码:

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
 
public class TEST1 {
	public static void main(String[] args){
		//json数据
		String jsonStr = "{\"resultcode\":\"200\",\"reason\":\"成功的返回\",\"result\":{\"company\":\"EMS\",\"com\":\"sf\","
				+ "\"no\":\"575677355677\",\"list\":[{\"datetime\":\"2018-01-01 10:10:10\",\"remark\":\"已收件\",\"zone\":\"深圳市\"},"
				+ "{\"datetime\":\"2018-01-02 01:00:00\",\"remark\":\"快件在 深圳 ,准备送往下一站 武汉集散中心 \",\"zone\":\"武汉市\"}],\"status\":1},"
				+ "\"error_code\":0}";
		JSONObject json = JSONObject.fromObject(jsonStr); //得到整个json串
		System.out.println("resultcode:"+json.getString("resultcode"));//根据key得到value:200
		System.out.println("reason:"+json.getString("reason"));  //根据key得到value:成功的返回
		
		//当遇到result时,也是将它当成一个整体串
		System.out.println("company:"+JSONObject.fromObject(json.getString("result")).getString("company"));
		System.out.println("com:"+JSONObject.fromObject(json.getString("result")).getString("com"));
		System.out.println("no:"+JSONObject.fromObject(json.getString("result")).getString("no"));
		
		//当遇到再次嵌套时,此时的list是一个JSONArray,所以需要将其当作数组的形式处理,其实还是一个串
		//get(i)以下标为主,里面的东西,其实也是一个json的形式数据,可以不看外面怎么嵌套,按道理只当成单单一个json串处理即可
		JSONArray jsonArray=JSONArray.fromObject(JSONObject.fromObject(json.getString("result")).getString("list"));
	    System.out.println("序循环多少次:"+jsonArray.length());
	    int num=jsonArray.length();
	    for(int i=0;i<num;i++){
	    	System.out.println(JSONObject.fromObject(jsonArray.get(i)).getString("datetime"));
	    	System.out.println(JSONObject.fromObject(jsonArray.get(i)).getString("remark"));
	    	System.out.println(JSONObject.fromObject(jsonArray.get(i)).getString("zone"));
	    }
		System.out.println("status:"+JSONObject.fromObject(json.getString("result")).getString("status"));
		
		System.out.println("reason:"+json.getString("error_code"));
	}
}

Maven项目引入的坐标:

 <dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.4</version>
</dependency>
 <dependency>
            <groupId>net.sf.json-lib</groupId>
            <artifactId>json-lib</artifactId>
            <version>2.4</version>
            <classifier>jdk15</classifier>
</dependency>

alibaba的fastjson和sun里json包区别
1、在使用的时候必然会有区别,相对来说sun包是比较简洁的,而alibaba的包则相对更明了好用。
net包在jsonobject——>string的时候:使用fromObject方法。如下:
User user1 = new User("zhangsan", "beijing", 26);
String arrayStr = JSONObject.fromObject(user1).get("userName").toString();
String arrayStr1 = JSONObject.fromObject(user1).toString();

阿里的包在jsonobject——>string的时候:使用parseObject方法。如下:
String arrayStr = JSONObject.parseObject(user1).get("userName").toString();

2、在string——>jsonarray候,区别如下:
net包依旧是一个方法行遍天下,使用fromObject方法:
JSONArray arrays = JSONArray.fromObject(arrayStr);

阿里包则是使用parseArray方法:
JSONArray arrays = JSONArray.parseArray(arrayStr);
User user = JSON.parseObject(JsonUserStr, User.class);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

朝闻道-夕死可矣

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

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

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

打赏作者

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

抵扣说明:

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

余额充值