1. 程式人生 > >JAVA解析JSON資料

JAVA解析JSON資料

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 LanguageStandard 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.

image

image

2.Json資料型別

2-1.json物件

image

2-2.json陣列

image

ps:JSONObject與JSONArray的區別

image(JSON陣列)

image(JSON陣列)

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();

}

}

}

輸出結果:

image

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();

}

}

}

輸出結果:

image

3-3 【分析】

我們通過Gson進行解析,所以在使用前需要匯入Gson.jar

解析json資料時,

1.需要進行建立Gson解析器

2.建立JSONObject物件

3.將json資料轉為為相應的資料

4.原始碼下載: