1. 程式人生 > >JAVA解析JSON數據

JAVA解析JSON數據

stack found 星期六 advice syntax fileread per bool val

轉自:http://www.cnblogs.com/boy1025/p/4551593.html

3.解析JSON數據(小編使用的GSON進行json數據的解析)

3-1 【JSONObject的解析】

下面是一個json文件:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 { "resultcode": "200", "reason": "successed!", "result": { "sk": { "temp": "24", "wind_direction": "西南風", "wind_strength": "2級", "humidity": "51%", "time": "10:11" }, "today": { "temperature":
"16℃~27℃", "weather": "陰轉多雲", "weather_id": { "fa": "02", "fb": "01" }, "wind": "西南風3-4 級", "week": "星期四", "city": "濱州", "date_y": "2015年06月04日", "dressing_index": "舒適",
"dressing_advice": "建議著長袖T恤、襯衫加單褲等服裝。年老體弱者宜著針織長袖襯衫、馬甲和長褲。", "uv_index": "最弱", "comfort_index": "", "wash_index": "較適宜", "travel_index": "", "exercise_index": "較適宜", "drying_index": "" }, "future": [ { "temperature": "16℃~27℃", "weather": "陰轉多雲", "weather_id": { "fa": "02", "fb": "01" }, "wind": "西南風3-4 級", "week": "星期四", "date": "20150604" }, { "temperature": "20℃~32℃", "weather": "多雲轉晴", "weather_id": { "fa": "01", "fb": "00" }, "wind": "西風3-4 級", "week": "星期五", "date": "20150605" }, { "temperature": "23℃~35℃", "weather": "多雲轉陰", "weather_id": { "fa": "01", "fb": "02" }, "wind": "西南風3-4 級", "week": "星期六", "date": "20150606" }, { "temperature": "20℃~33℃", "weather": "多雲", "weather_id": { "fa": "01", "fb": "01" }, "wind": "北風微風", "week": "星期日", "date": "20150607" }, { "temperature": "22℃~34℃", "weather": "多雲", "weather_id": { "fa": "01", "fb": "01" }, "wind": "西南風3-4 級", "week": "星期一", "date": "20150608" }, { "temperature": "22℃~33℃", "weather": "陰", "weather_id": { "fa": "02", "fb": "02" }, "wind": "西南風3-4 級", "week": "星期二", "date": "20150609" }, { "temperature": "22℃~33℃", "weather": "多雲", "weather_id": { "fa": "01", "fb": "01" }, "wind": "南風3-4 級", "week": "星期三", "date": "20150610" } ] }, "error_code": 0 }

我們進行解析(解析一部分):

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 package cn.edu.bzu.json; import java.io.FileNotFoundException; import java.io.FileReader; import com.google.gson.JsonArray; import com.google.gson.JsonIOException; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; public class Read { public static void main(String args[]){ JsonParser parse =new JsonParser(); //創建json解析器 try { JsonObject json=(JsonObject) parse.parse(new FileReader("weather.json")); //創建jsonObject對象 System.out.println("resultcode:"+json.get("resultcode").getAsInt()); //將json數據轉為為int型的數據 System.out.println("reason:"+json.get("reason").getAsString()); //將json數據轉為為String型的數據 JsonObject result=json.get("result").getAsJsonObject(); JsonObject today=result.get("today").getAsJsonObject(); System.out.println("temperature:"+today.get("temperature").getAsString()); System.out.println("weather:"+today.get("weather").getAsString()); } catch (JsonIOException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }

輸出結果:

技術分享

3-2 【JSONArray的解析】

下面是一個json文件

技術分享
{
    "cat":"it",
    "language":[
        {"id":1,"ide":"eclipse","name":Java},
        {"id":2,"ide":"XCode","name":"Swift"},
        {"id":3,"ide":"Visual Stdio","name":"C#"}     
    ],
    "pop":true
}
技術分享

我們進行解析:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 package cn.edu.bzu.json; import java.io.FileNotFoundException; import java.io.FileReader; import com.google.gson.JsonArray; import com.google.gson.JsonIOException; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.JsonSyntaxException; public class ReadJSON { public static void main(String args[]){ try { JsonParser parser=new JsonParser(); //創建JSON解析器 JsonObject object=(JsonObject) parser.parse(new FileReader("test.json")); //創建JsonObject對象 System.out.println("cat="+object.get("cat").getAsString()); //將json數據轉為為String型的數據 System.out.println("pop="+object.get("pop").getAsBoolean()); //將json數據轉為為boolean型的數據 JsonArray array=object.get("language").getAsJsonArray(); //得到為json的數組 for(int i=0;i<array.size();i++){ System.out.println("---------------"); JsonObject subObject=array.get(i).getAsJsonObject(); System.out.println("id="+subObject.get("id").getAsInt()); System.out.println("name="+subObject.get("name").getAsString()); System.out.println("ide="+subObject.get("ide").getAsString()); } } catch (JsonIOException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }

輸出結果:

技術分享

JAVA解析JSON數據