贴一下服务端返回的接送数据:
前面的版本、颜色都会后台返回的,也就是这是可变的规格,不能根据平时Gson解析数据那样使用了,平时是写实体类,一行Gson解析就可以了。现在因为规格是可变的,需要动态的获取并改变key的值。
【】 代表一组有序的数值 {}一个json对象
下面就是我的解析步骤:
JSONObject obj = new JSONObject(response);
if (obj.getString("errorCode").equals("200")) {
JSONArray ary = obj.getJSONArray("data");
JSONObject object = ary.getJSONObject(0);
array = object.getJSONArray("group_json");
JSONObject objModel = object.getJSONObject("group_model");
JSONObject objStyle = object.getJSONObject("groupStyle");
group_model 是JSONObject 解析成:
JSONObject objModel = object.getJSONObject("group_model");
groupStyle:里面包含数组
JSONObject objStyle = object.getJSONObject("groupStyle");
newlist:就是数组
JSONArray array = object.getJSONArray("newlist");
for(int i=0;i<array.length();i++){
JSONObject object = array.getJSONObject(i);
strAll = "";
for(int j=0;j<strKey.size();j++){
if (strAll.equals("")) {
strAll = object.getString(strKey.get(j)) + "_";
} else {
strAll = strAll + object.getString(strKey.get(j))+"_";
}
mapAll.put(strAll,object.getString("skuId"));
}
}
获取到array里面每一个值,并用——拼接起来,放到map集合里面,后续作比较使用。
Iterator iteratorSelected = objModel.keys();
while (iteratorSelected.hasNext()) {
String key = iteratorSelected.next() + "";
mapSelected.put(key, objModel.get(key).toString());
// Log.e("JSONArray5", objModel.get(key).toString());
}
通过迭代器遍历,得到每个json对象里面的key,value。
到此基本就结束了,这个去年走过的坑,今年遇到的时候顺便总结一下, 总结的不是很到位,有需要的再补充。
各位看官有表述不正确的地方希望指出,大家一起进步。day day up !