JAVA解析JSON数据

转自: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();

        }

    }

}

输出结果:

时间: 2024-10-25 02:19:00

JAVA解析JSON数据的相关文章

我的Android进阶之旅------&gt;解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai", articletype: "1&

Java构造和解析Json数据的两种方法详解一

原文链接:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多Java下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法示例. 用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二 一.介绍 JSO

Java构造和解析Json数据的两种方法详解二(转)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法示例. 一.介绍 org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究. 二.下载jar依赖包  

Java构造和解析Json数据的两种方法详解一(转)

在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法示例. 一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究. 二.下载jar依赖包:可以去这

Android 网络请求json数据,解析json数据,生成对应的java bean类一步到位,快速开发

Android 网络请求一般都涉及到图片和JSON数据,怎样快速的请求网络JSON数据,解析JSON数据,并且一步生成自己想要的Java bean实体类?这个涉及到Android 开发效率的问题.由于接触Android 网络这方面比较多,自然就找到一些好的方法来快速开发Android 网络模块的相关内容,接下来就为大家揭晓 一步快速请求,解析JSON 数据生成对应的Java bean实体类的方法. 注:我们先把思路讲解下吧: 1.网络请求JSON数据代码可以自己写,当然我还是推荐使用网络上开源的

【转】Java构造和解析Json数据的两种方法详解一

Java构造和解析Json数据的两种方法详解一 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法示例. 用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二 一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和J

Java构造和解析Json数据的两种方法详解二

三.基本方法介绍 由于org.json不能直接与bean进行转换,需要通过map进行中转,为了方便,我这里写了一个工具类JsonHelper,用于Json与Map.Bean的相互转换 package com.json; import java.lang.reflect.Method; import java.text.ParseException; import java.util.HashMap; import java.util.Iterator; import java.util.Map;

Java构造和解析Json数据的两种方法详解一——json-lib

转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面首先介绍用json-lib构造和解析Json数据的方法示例. 用org.son构造和解析Json数据的方法详解请参见我下一篇博文:Java构造和解析Json数据的两种方法详解二 一.介绍 JSON-

Java构造和解析Json数据的两种方法详解二——org.json

转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Json数据的方法示例.       用json-lib构造和解析Json数据的方法详解请参见我上一篇博文:Java构造和解析Json数据的两种方法详解一 一.介