JAVA解析JSON数据
在使用第三方api的使用,有时候会从网络中获得json数据,所以说我们将如何解析json数据?
下面小编将通过以下几点来进行json的讲解
1.什么是JSON? (http://www.json.org/)
JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.
2.Json数据类型
2-1.json对象
2-2.json数组
ps:JSONObject与JSONArray的区别
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(); } } } |
输出结果:
3-3 【分析】
我们通过Gson进行解析,所以在使用前需要导入Gson.jar
解析json数据时,
1.需要进行创建Gson解析器
2.创建JSONObject对象
3.将json数据转为为相应的数据