标签(空格分隔): Android


今天主要解决历史遗留问题,而且工作效率比较低orz

JSON 与 Gson

众所周知,JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。常见格式为键值对形式,如下

{"userName": "oven", "userId": "1234567"}

而GSON是google推出的一个实现 JSON 与 Java 对象间转化的库,它可以轻松实现 JSON 与 Java 对象间的转换

GsonFormat 插件的用法

在Android Studio中,可以利用 GsonFormat插件,快速创建符合 Gson要求的 javaBean 。GSONFormat地址:https://github.com/zzz40500/GsonFormat

使用过程

  1. 将需要解析的 json 数据直接粘贴到框内,


    image.png

小tip:应该直接把从接口拿到的数据粘贴,避免 api 文档格式问题带来的各种不必要的 bug

  1. 勾选需要的属性


    微信图片_20190208215423.png
  2. 自动生成代码

 
  public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
     public static JobBean objectFromData(String str) {
return new com.google.gson.Gson().fromJson(str, JobBean.class);
    }
    

4.在所需界面调用即可

JobBean job = JobBean.objectFromData(jsonstr);

其他

  • 使用 Gson 将数据解析成一个对象
Gson gson = new Gson();
Person person = gson.fromJson(jsonData,Person.class);
  • 使用 Gson 将数据解析成一个 List
List<Person> people = gson.fromJson(jsonData,new TypeToken<List<Person>>){}.getType());

借助TypeToken将期望解析成的数据类型传入fromJson()方法中

实际上,在使用Gsonformat时能自动生成对应的 getobjectfromdata 或 getArrayfromdata 方法,按需选择即可

  • SerializedName 的用法
    一种协调后台传回数据的字段命名格式与Java命名习惯不同的注释方式
@SerializedName("user_name")
private String userName;