JAVA解析JSON數據
阿新 • • 發佈:2017-06-27
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數據