json数据转换成java类

来源:互联网 发布:如何联系淘宝客服介入 编辑:程序博客网 时间:2024/06/07 21:11

需求:
这里写图片描述
将这个通过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
原创粉丝点击