安卓获取解析json动态获取key

本文分享了一种处理可变规格JSON数据的解析方法,通过动态获取并改变key值,实现对服务端返回的复杂数据结构的有效解析。文章详细介绍了使用JSONObject和JSONArray进行数据处理的过程,包括迭代器遍历、数据比对及存储等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

贴一下服务端返回的接送数据:

 前面的版本、颜色都会后台返回的,也就是这是可变的规格,不能根据平时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 !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值