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"));// menuListJSONArray 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解析相关推荐

  1. android中json解析及使用(上)

    本文整理自:http://www.open-open.com/lib/view/open1326376799874.html 一.JSON的定义 JSON是一种轻量级的数据交换格式,具有良好的可读和便 ...

  2. android之json解析优化,Android开发之json解析

    目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上 ...

  3. Android中JSON解析细解及实例

    1.JSON解析 (1).解析Object之一: {"url":"www.cnasda.com"} 解析方法: JSONObject demoJson = ne ...

  4. 浅谈Android项目----JSON解析(4种解析技术详解)

    json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 ...

  5. [Android开发] Json解析工具类,一个类搞定Json的解析

    一.简介 利用递归的方式反射解析到bean里面 二.详细代码 1. Json格式 例如服务器指定规定json格式为: {"code": "--" , // 返回 ...

  6. android中json解析及使用 (下)

    接上文 七.通过JSONTokener来解析json文本 7.1.将json文本解析为对象 我们可以通过JSONTokener的nextValue()来获得JSONObject对象,然后再通过JSON ...

  7. android json教程,Android之JSON解析

    编写项目,包含一个Activity.Activity页面效果如下图所示.点击按钮"解析文件1"后解析Json文件json_single并将结果显示在红色框体中,点击按钮" ...

  8. android中json解析及使用(中)

    接上文 六.通过JSONObject与JSONArray来解析json 我们可以通过JSONObject与JSONArray的getInt,getString,getDouble,getJSONArr ...

  9. android的json解析方式,Android解析JSON方式

    JSON数据格式的定义: JSON的全称是:JavaScript Object Notation,是一种轻量级的数据交换格式.它构建于两种结构: 1."名称/值" 对的集合(a c ...

最新文章

  1. java考勤与工资管理系统
  2. Android Studio Day03-1(Android studio 系统界面简介)
  3. 石川es6课程---11、json
  4. Virtual ListView效率对比
  5. 互联网 4 大发明之二维码,你如何使用 Python 生成二维码?
  6. 如何在Chrome调试器里检查嵌套Observable对象
  7. 数据结构拾遗(3) --红黑树的设计与实现(下)
  8. LeetCode —— 257. 二叉树的所有路径(Python)
  9. jmeter验证WEB页面的href链接请求
  10. 怎么用matlab算矩阵行列式的值,新手如何利用matlab软件进行简单的矩阵运算 值得一看...
  11. 畅通工程再续 最小生成树
  12. zabbix items复制
  13. stack videos in ffmpeg
  14. linux下 mysql主从备份
  15. VBS脚本运行库 ——文本文件的建立、追加、删除等
  16. python学习笔记 - 函数: 传参列表副本(不改变列表本身)
  17. MAC 安装python3 菜鸟教程
  18. w10系统老是自动息屏_快速修复win10系统关闭屏幕后又自动唤醒点亮的方法
  19. cs5 安装报错解决
  20. Python 小练习_battleship

热门文章

  1. 动手实践丨基于ModelAtrs使用A2C算法制作登月器着陆小游戏
  2. 【记录】一次51单片机串口乱码问题排查
  3. 1.18 在每一页打印相同的表头 [原创Excel教程]
  4. 北华航天工业学院计算机科学与技术,北华航天工业学院计算机科学与工程系介绍...
  5. 51单片机FM调频收音机可存台音量可调TEA5767 STM32
  6. 掌控板教程 | 让掌控板像 Mixly 串口监视器一样绘图
  7. 7-5 查验身份证 (15 分)
  8. WEB前端课程设计——田径队管理系统
  9. Java中常量定义在interface中好还是定义在class中好(常量接口模式)
  10. python编写的七夕