Android 数据解析——Gson与json

查看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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值