android 如何解析复杂的json数据
来源:互联网 发布:log4j flume源码 编辑:程序博客网 时间:2024/05/17 22:00
大家好,项目中有处理很多比较复杂的json数据,例如:
{
"resultSuccess": true,
"data": {
"goodsInfo": {
"argument": "处理器@#&显卡@#&硬盘",
"path_name": "../images/goods/2017-08-01/20170801144513782246.jpg",
"bg_name": "经典台式",
"bg_id": "2"
},
"gaList": [{
"path_name": "../images/goods/2017-07-25/20170725101722818254.jpg"
},
{
"path_name": "../images/goods/2017-08-01/20170801144513782246.jpg"
}],
"argumentStrList": [{
"argument": "I5@#&750@#&500G",
"id": "12",
"price": "3500.00",
"promotionPrice": "3010.00"
}],
"arMap": {
"显卡": {
"1050": "3500.00",
"1080": "4000.00",
"750": "2950.00"
},
"处理器": {
"I3": "2950.00",
"I7": "4000.00",
"I5": "3500.00"
},
"硬盘": {
"500G": "2950.00",
"1T": "4000.00"
}
}
},
"resultCode": "CLS001",
"state": "01",
"resultDesc": "数据操作成功",
"bgId": "2"
}
我们单来看这个arMap,因为相对来说这个地方是比较复杂的,Map套Map,外层还是一个List,我是这样解析的:
try {
//将json转化为一个对象 JSONObject jsonObject = new JSONObject(response);
//通过data字眼拿到data这个对象
JSONObject dataOb = (JSONObject) jsonObject.get("data");
//通过arMap字眼拿到arMap对象 JSONObject arMapObj = (JSONObject) dataOb.get("arMap"); arMap = arMapObj.toString(); } catch (JSONException e) { e.printStackTrace(); }
//Gson解析arMap,我这里用的treeMap,主要是因为,解析得到的数据是乱序的,这里是为了排序
TreeMap<String, TreeMap<String, String>> arMaps = new Gson().fromJson(arMap, new TypeToken<TreeMap<String, TreeMap<String, String>>>() { }.getType());//这样我们就得到了这个Map套Map的一个较为复杂的对象
//然后我们可以循环遍历拿到其中的key和value// List<String> arMapsKey = new ArrayList<String>(); List<TreeMap<String, String>> valueList = new ArrayList<TreeMap<String, String>>(); for (String pKey : arMaps.keySet()) { arMapsKey.add(pKey); if (arMapsKey.size() == 1) { } else if (arMapsKey.size() == 2) { } else if (arMapsKey.size() == 3) { } } for (TreeMap<String, String> pValue : arMaps.values()) { valueList.add(pValue); } if (valueList.size() == 2) { for (String cCkey : valueList.get(0).keySet()) { } for (String cSkey : valueList.get(1).keySet()) { } } else if (valueList.size() == 1) { for (String cCkey : valueList.get(0).keySet()) { } } else if (valueList.size() == 3) { for (String cCkey : valueList.get(0).keySet()) { } for (String cSkey : valueList.get(1).keySet()) { } for (String cSkey : valueList.get(2).keySet()) { } } else { return; }
- android 如何解析复杂的json数据
- Android中解析复杂的JSON数据
- Android中复杂Json数据的解析
- 解析复杂的json数据
- 复杂json数据的解析
- Android:使用Gson解析复杂的JSON数据
- Android利用Gson库解析复杂结构的JSON数据
- Android:使用Gson解析复杂的JSON数据
- [置顶] Android:使用Gson解析复杂的JSON数据
- Android开发之原生解析复杂的json数据
- Android之json复杂数据解析
- 使用Gson解析复杂的json数据
- 使用Gson解析复杂的json数据
- 使用Gson解析复杂的json数据
- 使用Gson解析复杂的json数据
- Gson解析复杂的json数据
- Gson解析复杂的json数据
- Gson解析复杂的json数据
- Python 内置函数
- 跳台阶、跳台阶升级版(算法)
- 互斥锁-条件变量-信号量总结
- HDU3966 Aragorn's Story【树链剖分】
- sql server 存储过程 中处理json
- android 如何解析复杂的json数据
- 安卓获取adb设备名称
- opencv检测直线方法——形态学方法
- apollo简单使用
- Sping 学习笔记8——SSH框架中事务的声明与配置
- Ubuntu 16.4 默认安装的mysql 修改默认编码
- Android MediaPlayer的生命周期
- Android开发艺术探究(一):Activity的生命周期和启动模式
- js