Android解析json-Gson使用
Posted hequnwang10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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}
以上是关于Android解析json-Gson使用的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段
解析:JSON 文本没有以数组或对象开头,并且允许未设置片段的选项