Android解析json-Gson使用

Gson是一个第三方解析json的库。需求分析:后端向我们前端传递json时,我们需要解析json然后找到我们想要的值。直接讲解如何使用这个第三方库。

一、安装依赖

implementation 'com.google.code.gson:gson:2.8.6'

二、基础用法

1、创建实体类

Android前端需要创建一个实体类,与后端传递过来的json相对应。这里拿上一篇文章《Android使用OKhttp3实现登录注册功能+springboot搭建后端》的案例分析。比如点击登录之后,后端会传递一个json给前端。

后端实体类R.java
@Data
public class R {
    @ApiModelProperty(value = "是否成功")
    private Boolean success;

    @ApiModelProperty(value = "返回码")
    private Integer code;

    @ApiModelProperty(value = "返回消息")
    private String message;

    @ApiModelProperty(value = "返回数据")
    private Map<String, Object> data = new HashMap<String, Object>();
    }

后端返回结果的实体类是这几个值。比如前端登录成功后,我们成功获取了json。结果如下:

D/whq登录: {"success":true,"code":20000,"message":"成功","data":{"result":"success login"}}-----------MyResult-------

在这里插入图片描述

前端Android实体类ResultGson.java
import java.util.HashMap;
import java.util.Map;

public class ResultGson {
    private Boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<String, Object>();

    public ResultGson(Boolean success, Integer code, String message, Map<String, Object> data) {
        this.success = success;
        this.code = code;
        this.message = message;
        this.data = data;
    }

    public ResultGson() {
    }

    @Override
    public String toString() {
        return "ResultGson{" +
                "success=" + success +
                ", code=" + code +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }

    public Boolean getSuccess() {
        return success;
    }

    public void setSuccess(Boolean success) {
        this.success = success;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Map<String, Object> getData() {
        return data;
    }

    public void setData(Map<String, Object> data) {
        this.data = data;
    }
}

这样就将前后端json对应起来了。

2、创建Gson对象

方法一

Gson gson = new Gson();

方法二

Gson gson = new GsonBuilder().create();

相比直接使用构造方法,GsonBuilder创建的方式更灵活,因为它支持对Gson的配置。选择第二个GsonBuilder。

3、将JSON转换为对象

比如拿登录的案例来说,前端返回的json对象为
MyResult

{"success":true,"code":20000,"message":"成功","data":{"result":"success login"}}

解析:

String MyResult = response.body().string();
Gson gson = new GsonBuilder().create();
ResultGson resultGson = gson.fromJson(MyResult, ResultGson.class);

这样得到的resultGson 就可以获取json的全部值
resultGson

{success=true, code=20000, message='成功', data={result=success login}}
4、将对象转换为JSON
 Map<String, Object> data = new HashMap<String, Object>();
 data.put("result","success login");
 ResultGson json = new ResultGson(true, 20000, "成功", data);
 Log.d("原始json",json.toString());
 Gson gson1 = new GsonBuilder().create();
 String toJson = gson1.toJson(json);
 Log.d("转化之后的json",toJson);

结果:

D/原始json: ResultGson{success=true, code=20000, message='成功', data={result=success login}}
D/转化之后的json: {"code":20000,"data":{"result":"success login"},"message":"成功","success":true}

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值