您的位置:首页 > Web前端 > JavaScript

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

2018-01-05 20:34 756 查看

0x00 前言

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

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

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

{
"rst": 0,
"msg": "ok",
"data": {
"cookie": "JSESSIONID=abcntKeuJhop56LGykfdw"
}
}


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

针对如上的数据:

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

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

JsonRootBean.java

public class JsonRootBean {

private int rst;
private String msg;
private Data data;
public void setRst(int rst) {
this.rst = rst;
}
public int getRst() {
return rst;
}

public void setMsg(String msg) {
this.msg = msg;
}
public String getMsg() {
return msg;
}

public void setData(Data data) {
this.data = data;
}
public Data getData() {
return data;
}

}


Data.java

public class Data {

private String cookie;
public void setCookie(String cookie) {
this.cookie = cookie;
}
public String getCookie() {
return cookie;
}

}


主类:Main.java

String json = "{\n" +
"  \"rst\": 0,\n" +
"  \"msg\": \"ok\",\n" +
"  \"data\": {\n" +
"    \"cookie\": \"JSESSIONID=abcntKeuJhop56LGykfdw\"\n" +
"  }\n" +
"}";
JsonRootBean jsonRootBean = new Gson().fromJson(json, JsonRootBean.class);
System.out.println("rst:" + jsonRootBean.getRst());
System.out.println("msg:" + jsonRootBean.getMsg());
System.out.println("data:" + jsonRootBean.getData().getCookie());


结果

rst:0

msg:ok

data:JSESSIONID=abcntKeuJhop56LGykfdw

方式二(直接访问):

主类:Main.java

import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Main {

public static void main(String[] args) {
String json = "{\n" +
"  \"rst\": 0,\n" +
"  \"msg\": \"ok\",\n" +
"  \"data\": {\n" +
"    \"cookie\": \"JSESSIONID=abcntKeuJhop56LGykfdw\"\n" +
"  }\n" +
"}";
JsonObject jsonObject = (JsonObject) new JsonParser().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());
}
}


结果

rst:0

msg:ok

data:JSESSIONID=abcntKeuJhop56LGykfdw

0x02 结论

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: