android複雜json解析,androidjson

來源:互聯網
上載者:User

android複雜json解析,androidjson
JSON建構有兩種結構:對象數組
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":"參展企業名錄1XXX投資有限公司2XXX網路科技有限公司3XXX齋科技有限公司"},{"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 方法省略}

解析器封裝:GoodsResultParser.java
/******************************************************************************* * * 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.365yunshang.com/10805"><img style="width: 310px; height: 383px;" src="http://xxx/company/ueditor1_3_5/jsp/upload/140637404.jpg" title="[$1LWSKPQJ72_TY])3AS.jpg" border="0" height="383" hspace="0" vspace="0" width="310"/></a></p>, goodsId=P002, goodsImg=/company/download/goods_img/937ea036-4c39-418d-a1d7-d5dadba66ab3.jpg, goodsName=湖北?葛店互連網產業博覽會, menuList=null, msgType=3, result=true, mGoodsResultItem=[app.backend.model.GoodsResultItem@42226fd8, app.backend.model.GoodsResultItem@42226af0, app.backend.model.GoodsResultItem@421ff478]]

當然此種解決方式不一定最完善,也可引入第三方開源jar來完成,但是內部實現方式和原理都是類同的。(此方式僅供參考)
android 解析複雜的json

hello,這位同學, 請用gson包來解析,提供的功能可以把 json資料直接轉化成 對象 傳出來,非常簡便好用,誰用誰知道.
 
Android 解析這樣的json資料怎解析?

簡單的給你做了下解析,具體要解析到什麼程度,你自己看吧。大概解析方法就是這樣的:
如下:
privatevoid testJson(){
String JsonData = "[{\"id\":[\"386\",\"381\",\"379\",\"377\"],\"num\":[\"386\",\"381\",\"379\",\"377\"]},{\"id\":[\"3860\",\"3810\",\"3790\",\"3770\"],\"num\":[\"3860\",\"3810\",\"3790\",\"3770\"]}]";
JSONObject obj = null;
JSONArray jsonArary;
try {
jsonArary = new JSONArray(JsonData);
for(int i=0;i<jsonArary.length();i++){
obj = jsonArary.getJSONObject(i);
//取ID
JSONArray strID = obj.getJSONArray("id");
for(int j=0;j<strID.length();j++){
Log.v("ID:", strID.get(j).toString());
}
//取num
JSONArray strNum = obj.getJSONArray("num");
for(int k=0;k<strNum.length();k++){
Log.v("NUM:", strNum.get(k).toString());
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.