1. 程式人生 > >java簡單解析json

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