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"));
	}
}

猜你喜欢

转载自blog.csdn.net/jc_benben/article/details/83186560