java簡單解析json
阿新 • • 發佈:2018-11-08
一、什麼是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")); } }