首页 > 代码库 > android复杂json解析
android复杂json解析
JSON建构有两种结构:对象和数组
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构。
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构。
以下是项目中的一段json格式,也并不算很复杂,贴出解析方式和思路:
{ "result":true,"msgType":3,"count":16,"batchId":"hb20140711", "companyFullName":"湖北省网博会展有限公司","goodsId":"P002", "goodsName":"湖北?葛店互联网产业博览会","goodsDes":"3AS.jpg", "goodsImg":"/company/download/goods_img/9a036-4c39-418d-a1d7-d5dadba66ab3.jpg", "menuList":[{"title":"参展引导","menuContent":"c.jpg\""c2.jpg\""c3.jpg\""}, {"title":"参展商家","menuContent":"?参展企业名录 1 XXX投资有限公司 2 XXX网络科技有限公司 3 XXX斋科技有限公司 "}, {"title":"展会概况","menuContent":" 博 览 会 概 况 一、博览会地点和日程安排 报到布展:2014年8月14-15日 08:30-17:00 开展时间:2014年8月16日 08:30-17:00 2014年8月17日 08:30-17:00 2014年8月18日 08:30-14:00 "}]}
分析:
1.单个实体有个多属性
2.实体中存在集合
3.集合中也有各自的属性
解决思路:
1.创建实体(商品信息的实体、集合menuList中的实体)
2.商品实体类中创建List<集合menuList实体>
3.解析完基本商品信息后将menuList集合添加到其中
商品实体信息:GoodsResultInfo.java
/******************************************************************************* * * Copyright (c) Weaver Info Tech Co. Ltd * * GoodsResultInfo * * app.backend.model.GoodsResultInfo.java * TODO: File description or class description. * * @author: gao_chun * @since: 2014年9月22日 * @version: 1.0.0 * * @changeLogs: * 1.0.0: First created this class. * ******************************************************************************/ package app.backend.model; import java.io.Serializable; import java.util.List; /** *@author gao_chun * */ public class GoodsResultInfo implements Serializable{ private static final long serialVersionUID = 1L; private String batchId; private int count; private String companyFullName; private String goodsDes; private String goodsId; private String goodsImg; private String goodsName; //private String menuList; private int msgType; private boolean result; private List<GoodsResultItem> mGoodsResultItem; //menuList集合 //get 、set 方法省略 }
menuList实体信息:GoodsResultItem.java
/******************************************************************************* * * Copyright (c) Weaver Info Tech Co. Ltd * * GoodsResultItem * * app.backend.model.GoodsResultItem.java * TODO: File description or class description. * * @author: gao_chun * @since: 2014年9月22日 * @version: 1.0.0 * * @changeLogs: * 1.0.0: First created this class. * ******************************************************************************/ package app.backend.model; import java.io.Serializable; /** *@author gao_chun * */ public class GoodsResultItem implements Serializable{ private String title; private String menuContent; //get 、 set 方法省略 }
/******************************************************************************* * * Copyright (c) Weaver Info Tech Co. Ltd * * AuthnParser * * web.demo.parse.LoginParser.java * TODO: File description or class description. * * @author: gao_chun * @since: 2014-9-22 * @version: 1.0.0 * * @changeLogs: * 1.0.0: First created this class. * ******************************************************************************/ package app.backend.network.parser; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONObject; import android.text.TextUtils; import app.backend.model.GoodsResultInfo; import app.backend.model.GoodsResultItem; import app.util.Log; /** * @author gao_chun * */ public class GoodsResultParser{ /* (non-Javadoc) * @see parseJson(org.json.JSONObject) */ public static GoodsResultInfo parseJson(String object) { Log.i("GoodsResultParser ----------- >",object); GoodsResultInfo mGoodsResultInfo; //结果信息 List<GoodsResultItem> goodsItemList;//menuList中的集合 GoodsResultItem mGoodsItem; //menuList子条目 try { if(object != null && !TextUtils.isEmpty(object)) { JSONObject obj = new JSONObject(object); mGoodsResultInfo = new GoodsResultInfo(); goodsItemList = new ArrayList<GoodsResultItem>(); mGoodsResultInfo.setResult(obj.getBoolean("result")); mGoodsResultInfo.setMsgType(obj.getInt("msgType")); mGoodsResultInfo.setCount(obj.getInt("count")); mGoodsResultInfo.setBatchId(obj.getString("batchId")); mGoodsResultInfo.setCompanyFullName(obj.getString("companyFullName")); mGoodsResultInfo.setGoodsId(obj.getString("goodsId")); mGoodsResultInfo.setGoodsName(obj.getString("goodsName")); mGoodsResultInfo.setGoodsDes(obj.getString("goodsDes")); mGoodsResultInfo.setGoodsImg(obj.getString("goodsImg")); // menuList JSONArray menuList = obj.getJSONArray("menuList"); if(menuList != null && menuList.length() > 0) { for (int i = 0; i < menuList.length(); i++) { JSONObject jsonItem = menuList.getJSONObject(i); // 获取每一个json对象 mGoodsItem = new GoodsResultItem(); //menuList中的条目 mGoodsItem.setTitle(jsonItem.getString("title")); mGoodsItem.setMenuContent(jsonItem.getString("menuContent")); goodsItemList.add(mGoodsItem); //放入集合中 mGoodsResultInfo.setmGoodsResultItem(goodsItemList);//将集合放入商品实体类中 } } return mGoodsResultInfo; } } catch (Exception e) { e.printStackTrace(); } return null; } }
//解析结果数据,传递到页面显示 GoodsResultInfo mGoodsList = GoodsResultParser.parseJson(result); //Intent resultIntent = new Intent(this,GoodsDetailsActivity.class); //resultIntent.putExtra(RESULT,mGoodsList); //startActivity(resultIntent);
GoodsResultInfo [batchId=hb20140711, count=16, companyFullName=湖北省网博会展有限公司, goodsDes=<p><a target="_self" href=http://www.mamicode.com/"http://www.365yunshang.com/10805">>
当然此种解决方式不一定最完善,也可引入第三方开源jar来完成,但是内部实现方式和原理都是类同的。(此方式仅供参考)
android复杂json解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。