json数据转换成java类

需求:
这里写图片描述
将这个通过API返回的json数据解析出来,存在相对应的数据类中。

这里写图片描述
这里写图片描述

将服务器请求,通过json edit解析器解析得到的json arraylist,转换成java类数据arraylist

方法:

1.定义基础json数据类和基本的json数据处理方法,其他的数据类都会继承这个类



public abstract class TMAbsJsonData {
    public static JSONArray convertToJsonArray(List<? extends TMAbsJsonData> list) {
        JSONArray array = new JSONArray();
        for (TMAbsJsonData data : list) {
            array.put(data.exportAsJsonObj());
        }
        return array;
    }

    protected JSONObject originJsonData;

    public TMAbsJsonData() {}

    public TMAbsJsonData(JSONObject data) {
        originJsonData = data;
    }

    /** export this structure as {@link org.json.JSONObject} */
    public JSONObject exportAsJsonObj() {
        return originJsonData;
    }

    /** export this structure as {@link String} */
    public final String exportAsJsonString() {
        return exportAsJsonObj().toString();
    }
}
  1. 专为每个api请求得到的json数据✉️响应的数据类,若是一条item包括了多个数据类,就可以通过在item对应的数据类中包含json数据类的arrayist或者array的成员变量的方式:

(1)提取json数据的基本类


public class TMLifeMasterBannerData extends TMAbsJsonData{
    public String acm,scm;
    public int itemType;
    public String itemId,itemLink;
    public String itemImage;
    public String bannerType;

    public static ArrayList<TMLifeMasterBannerData> toArrayList(JSONArray array) {
        if (array != null && array.length() > 0) {
            ArrayList<TMLifeMasterBannerData> list = new ArrayList<TMLifeMasterBannerData>();
            for (int index = 0; index < array.length(); index++) {
                list.add(new TMLifeMasterBannerData(array.optJSONObject(index)));
            }
            return list;
        }
        return null;
    }

    public static TMLifeMasterBannerData createWithJsonObj(JSONObject object) {
        TMLifeMasterBannerData data = null;
        if (object != null) {
            data = new TMLifeMasterBannerData(object);
        }
        return data;
    }


    public static TMLifeMasterBannerData createFromJsonString(String json) {
        TMLifeMasterBannerData bannerData = null;
        if (!TextUtils.isEmpty(json)) {
            try {
                bannerData= new TMLifeMasterBannerData(new JSONObject(json));
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
        return bannerData;
    }


    public boolean isValid() {
        return !(TextUtils.isEmpty(itemLink) || TextUtils.isEmpty(itemImage));
    }

    public TMLifeMasterBannerData(JSONObject data) {
        super(data);
        if (data != null) {
            itemType = TMLifeMasterListItemData.TYPE.BANNER;
            if (data != null) {
                itemId = data.optString("id");
                itemImage = data.optString("content");
                itemLink = data.optString("action");
                bannerType = data.optString("type");
                acm = data.optString("acm");
                scm = data.optString("scm");
            }
        }
    }
}

(2)对应每个显示的item的数据类,包含多个json基本类

public class TMLifeMasterBannerItemData extends TMLifeMasterListItemData {
    public String bannerType;
    **public ArrayList<TMLifeMasterBannerData> bannerDatas;**

    public static TMLifeMasterBannerItemData createWithJsonObj(JSONObject object) {
        TMLifeMasterBannerItemData data = null;
        if (object != null) {
            data = new TMLifeMasterBannerItemData(object);
        }
        return data;
    }

    public boolean isValid() {
        return bannerDatas == null ? false : true;
    }

    public TMLifeMasterBannerItemData(JSONObject data) {
        super(data);
        itemType = TYPE.BANNER;
        if (data!=null)
        {
            bannerDatas = TMLifeMasterBannerData.toArrayList(data.optJSONArray("data"));
            bannerType=bannerDatas.get(0).bannerType;
        }

        }
}
  1. 通过这些定义的数据类,就可以实现json数据的提取和转换
    public TMLifeMasterBannerItemData bannerItem;
        bannerItem=TMLifeMasterBannerItemData.createWithJsonObj(data.optJSONObject("201508240"));
  1. 在发出api数据请求后,在请求成功的回调函数(如onsuccess())中,将response返回的数据转换成jsonObject,然后使用之前定义的数据类,提取出jsonObject的数据,形成了java数据类对象
 JSONObject data = response.getDataJsonObject();

            if (data != null) {
                JSONObject resultValue = data.optJSONObject("resultValue");
                }
                    TMLifeMasterListData listData = new TMLifeMasterListData(resultValue);
  1. 将数据类对象按一定的布局显示给用户
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值