Gson的解析Json数据的两种方式

Gson的解析Json数据的两种方式

2018年01月05日20:34:00胡大炮的妖孽人生阅读数:18819标签:gsonjsonjava更多

个人分类:java

版权声明:本博客所有文章除特别声明外,均采用CCBY-NC-SA4.0许可协议。转载请注明出处!https://blog.csdn.net/huplion/article/details/78984977

0x00前言

目前网络上有很多接口是Json形式的,Gson是谷歌开源的Json解析库,可以方便的将Java对象转换成Json字符串,也可以方便的将Json字符串转换成Java对象。

0x01两种解析Json字符串方式

假设我们要解析的字符串是如下字符串:

{

"rst":0,

"msg":"ok",

"data":{

"cookie":"JSESSIONID=abcntKeuJhop56LGykfdw"

}

}

1

2

3

4

5

6

7

方式一(建立一个映射类):

针对如上的数据:

https://www.bejson.com/json2javapojo/new/

我们可以手动建立如下的类或者访问以上的链接建立如下Java实体类:

JsonRootBean.java

publicclassJsonRootBean{

privateintrst;

privateStringmsg;

privateDatadata;

publicvoidsetRst(intrst){

this.rst=rst;

}

publicintgetRst(){

returnrst;

}

publicvoidsetMsg(Stringmsg){

this.msg=msg;

}

publicStringgetMsg(){

returnmsg;

}

publicvoidsetData(Datadata){

this.data=data;

}

publicDatagetData(){

returndata;

}

}

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

Data.java

publicclassData{

privateStringcookie;

publicvoidsetCookie(Stringcookie){

this.cookie=cookie;

}

publicStringgetCookie(){

returncookie;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

主类:Main.java

Stringjson="{\n"+

"\"rst\":0,\n"+

"\"msg\":\"ok\",\n"+

"\"data\":{\n"+

"\"cookie\":\"JSESSIONID=abcntKeuJhop56LGykfdw\"\n"+

"}\n"+

"}";

JsonRootBeanjsonRootBean=newGson().fromJson(json,JsonRootBean.class);

System.out.println("rst:"+jsonRootBean.getRst());

System.out.println("msg:"+jsonRootBean.getMsg());

System.out.println("data:"+jsonRootBean.getData().getCookie());

1

2

3

4

5

6

7

8

9

10

11

结果

rst:0

msg:ok

data:JSESSIONID=abcntKeuJhop56LGykfdw

方式二(直接访问):

主类:Main.java

importcom.google.gson.JsonObject;

importcom.google.gson.JsonParser;

publicclassMain{

publicstaticvoidmain(String[]args){

Stringjson="{\n"+

"\"rst\":0,\n"+

"\"msg\":\"ok\",\n"+

"\"data\":{\n"+

"\"cookie\":\"JSESSIONID=abcntKeuJhop56LGykfdw\"\n"+

"}\n"+

"}";

JsonObjectjsonObject=(JsonObject)newJsonParser().parse(json);

System.out.println("rst:"+jsonObject.get("rst").getAsInt());

System.out.println("msg:"+jsonObject.get("msg").getAsString());

System.out.println("data:"+jsonObject.get("data").getAsJsonObject().get("cookie").getAsString());

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

结果

rst:0

msg:ok

data:JSESSIONID=abcntKeuJhop56LGykfdw

0x02结论

两种方式各有优劣,在需要用的属性少的时候适合第二种方式,否则适合第一种方式。

相关推荐