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

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 结论
两种方式各有优劣,在需要用的属性少的时候适合第二种方式,否则适合第一种方式。
--------------------- 
版权声明:本文为CSDN博主「胡大炮的妖孽人生」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huplion/article/details/78984977

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值