java解析json的操作
阿新 • • 發佈:2018-12-29
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 voidmain(String args[]){ try { JsonParser parser=new JsonParser(); //建立JSON解析器 //JsonObject result=parser.get("result").getAsJsonObject(); JsonObject object=(JsonObject) parser.parse(new FileReader("weather.json")); //建立JsonObject物件 //+++++++++++++++++++++++++++是json中的主變數+++++++++++++++++++++++++++System.out.println("resultcode"+object.get("resultcode").getAsInt()); System.out.println("reason"+object.get("reason").getAsString()); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //+++++++++++++++++++++到主json的目錄result中 包括 迭代json object 和json 陣列JsonObject result1=object.get("result").getAsJsonObject(); //++++++++++++++++++進入到result中的子object json之中++++++++++++++++++++++++++++++++++++++++++++++++++ JsonObject today=result1.get("today").getAsJsonObject(); System.out.println("temperature:"+today.get("temperature").getAsString()); System.out.println("weather:"+today.get("weather").getAsString()); System.out.println("city"+today.get("city").getAsString()); //today下面的迭代weather_id JsonObject weather_id=today.get("weather_id").getAsJsonObject(); System.out.println("favalue:"+weather_id.get("fa").getAsString()); //+++++++++++++++++通過result1 找到 儲存資料的子目錄 ARRAY future, JsonArray array=result1.get("future").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("temperature").getAsString()); System.out.println("name="+subObject.get("weather").getAsString()); System.out.println("week="+subObject.get("week").getAsString()); System.out.println("wind"+subObject.get("wind").getAsString()); //System.out.println("ide="+subObject.get("ide").getAsString()); } } catch (JsonIOException e) { e.printStackTrace(); } catch (JsonSyntaxException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } } }
他所解析的json為
1 { 2 "resultcode": "200", 3 "reason": "successed!", 4 "result": { 5 "sk": { 6 "temp": "24", 7 "wind_direction": "西南風", 8 "wind_strength": "2級", 9 "humidity": "51%", 10 "time": "10:11" 11 }, 12 "today": { 13 "temperature": "16℃~27℃", 14 "weather": "陰轉多雲", 15 "weather_id": { 16 "fa": "02", 17 "fb": "01" 18 }, 19 "wind": "西南風3-4 級", 20 "week": "星期四", 21 "city": "濱州", 22 "date_y": "2015年06月04日", 23 "dressing_index": "舒適", 24 "dressing_advice": "建議著長袖T恤、襯衫加單褲等服裝。年老體弱者宜著針織長袖襯衫、馬甲和長褲。", 25 "uv_index": "最弱", 26 "comfort_index": "", 27 "wash_index": "較適宜", 28 "travel_index": "", 29 "exercise_index": "較適宜", 30 "drying_index": "" 31 }, 32 "future": [ 33 { 34 "temperature": "16℃~27℃", 35 "weather": "陰轉多雲", 36 "weather_id": { 37 "fa": "02", 38 "fb": "01" 39 }, 40 "wind": "西南風3-4 級", 41 "week": "星期四", 42 "date": "20150604" 43 }, 44 { 45 "temperature": "20℃~32℃", 46 "weather": "多雲轉晴", 47 "weather_id": { 48 "fa": "01", 49 "fb": "00" 50 }, 51 "wind": "西風3-4 級", 52 "week": "星期五", 53 "date": "20150605" 54 }, 55 { 56 "temperature": "23℃~35℃", 57 "weather": "多雲轉陰", 58 "weather_id": { 59 "fa": "01", 60 "fb": "02" 61 }, 62 "wind": "西南風3-4 級", 63 "week": "星期六", 64 "date": "20150606" 65 }, 66 { 67 "temperature": "20℃~33℃", 68 "weather": "多雲", 69 "weather_id": { 70 "fa": "01", 71 "fb": "01" 72 }, 73 "wind": "北風微風", 74 "week": "星期日", 75 "date": "20150607" 76 }, 77 { 78 "temperature": "22℃~34℃", 79 "weather": "多雲", 80 "weather_id": { 81 "fa": "01", 82 "fb": "01" 83 }, 84 "wind": "西南風3-4 級", 85 "week": "星期一", 86 "date": "20150608" 87 }, 88 { 89 "temperature": "22℃~33℃", 90 "weather": "陰", 91 "weather_id": { 92 "fa": "02", 93 "fb": "02" 94 }, 95 "wind": "西南風3-4 級", 96 "week": "星期二", 97 "date": "20150609" 98 }, 99 { 100 "temperature": "22℃~33℃", 101 "weather": "多雲", 102 "weather_id": { 103 "fa": "01", 104 "fb": "01" 105 }, 106 "wind": "南風3-4 級", 107 "week": "星期三", 108 "date": "20150610" 109 } 110 ] 111 } 112 }