Android 数据解析——Gson与json

  • Post author:
  • Post category:其他


查看json数据详情链接:

JSON在线解析及格式化验证 – JSON.cn

相比json解析,Gson解析更高效简洁

先看看json解析

      JSONObject object = new JSONObject(s);
      String succ= object.getString("success");
JSONArray barray = object.getJSONArray("list");
for (int b = 0;b<barray.length();b++){
    JSONObject jsonObject = barray.getJSONObject(b);
    String title = jsonObject.getString("title");
    String Startdate = jsonObject.getString("Startdate");
    String placeCode = jsonObject.getString("placeCode");
    String readType = jsonObject.getString("readType");
    if (jsonObject.getString("readType").equals("未读")){
    }

    MiniNewsEntity entity1 = new MiniNewsEntity();
    entity1.setStartdate(Startdate);
    entity1.setTitle(title);
    entity1.setPlaceCode(placeCode);
    entity1.setStatus(readType);

    barEntityList.add(entity1);
}

开始Gson解析

添加Gson依赖

implementation "com.google.code.gson:gson:2.8.2"
implementation 'com.google.code.gson:gson:2.9.1'

以一下json为解析对象

{“apkPath”:”http://61.145.196.120/update/ywAPP/app-release.apk”,”version”:26,”content”:”1.修复自动更新bug”}

1、创建bean工具类

/**
 * 作者:created by meixi
 * 邮箱:13164716840@163.com
 * 日期:2018/11/2 09
 */
public class TestGson {

    private  String apkPath;
    private  String version;
    private  String content;

    public String getApkPath() {
        return apkPath;
    }

    public void setApkPath(String apkPath) {
        this.apkPath = apkPath;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}

2、开始解析

String s = “{“apkPath”:”http://61.145.196.120/update/ywAPP/app-release.apk”,”version”:26,”content”:”1.修复自动更新bug”}”;

                    Gson gson = new Gson();

                    TestGson userBean =gson.fromJson(s,  new TypeToken<TestGson>() {}.getType());
                    
//                    TestGson userBean = gson.fromJson(s, TestGson.class);//第二种写法

                    Log.i("lgq", "wwbb==" + userBean.getContent());

结果:11-02 09:43:53.055 18477-18477/com.tianxinyw.mapclient.liteapp I/lgq: wwbb==1.修复自动更新bug

3、Gson解析数组

{“result”:1,”count”:3,”page”:1,”yeCount”:1,”list”:[{“readType”:”未读”,”title”:”大岭山光顺网吧计费即将到期,请提醒续费!”,”Startdate”:”2018-11-16 23:59:59.0″,”placeCode”:”1897″},{“readType”:”未读”,”title”:”大岭山玩不够网吧计费即将到期,请提醒续费!”,”Startdate”:”2018-11-16 23:59:59.0″,”placeCode”:”1887″},{“readType”:”未读”,”title”:”大朗盛佳网吧计费即将到期,请提醒续费!”,”Startdate”:”2018-11-03 00:00:00.0″,”placeCode”:”4701″}]}

3/1创建数组单元类

public class list {

    private  String readType;
    private  String title;
    private  String Startdate;

    public String getReadType() {
        return readType;
    }

    public void setReadType(String readType) {
        this.readType = readType;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getStartdate() {
        return Startdate;
    }

    public void setStartdate(String startdate) {
        Startdate = startdate;
    }
}

内部类写法

public static class DataBean implements Serializable {

    private int id;
    private int device_id;

private List<DataBean> data;

3/2创建总数据元素类(可只取部分数据)

public class OutsideEntity {

    private  String yeCount;


    private  List<com.tianxinyw.mapclient.entitys.list> list = new ArrayList<>();


    public String getYeCount() {
        return yeCount;
    }

    public void setYeCount(String yeCount) {
        this.yeCount = yeCount;
    }

    public List<com.tianxinyw.mapclient.entitys.list> getList() {
        return list;
    }

    public void setList(List<com.tianxinyw.mapclient.entitys.list> list) {
        this.list = list;
    }
}

3/3开始解析json

Gson gson = new Gson();

OutsideEntity userBean =gson.fromJson(s,  new TypeToken<OutsideEntity>() {}.getType());

List<list> userBeanList = userBean.getList();//单独获取数组集合

Log.i("lgq", "re==logtest=====" +userBeanList.get(2).getTitle()+"...."+userBean.getYeCount());

结果是:11-02 13:41:47.907 14188-14188/com.tianxinyw.mapclient.liteapp I/lgq: re==logtest=====大朗盛佳网吧计费即将到期,请提醒续费!….1



版权声明:本文为meixi_android原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。