如何使用动态Keyname解析JSON? [英] How to Parse JSON with dynamic Keyname?

查看:196
本文介绍了如何使用动态Keyname解析JSON?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的JSON响应。

  {
array:[
{
object1:{
aa:somevalue1,
bb:somevalue2,
cc:somevalue3
}
},
{
object2:{
aa:somevalue4,
bb:somevalue5,
cc :somevalue6
}
}
]}

现在我可以从上面的响应中获取一个JSON数组。我想读取价值 aa bb cc 来自对象 object1 object2 for循环



JSON是动态的,我的意思是 object2 也可以出现在 object1 (以相反的顺序)并且我可能会再获得一个具有相同结构的对象( object3 )或只有一个( object1 object2 object3 )。



<我不想这样做,因为我失败了:

  JSONArray jsonArray = json.getJSONArray(array); 
for(int i = 0; i< jsonArray.length(); i ++)
{
JSONObject jsonObject = jsonArray.getJSONObject(i).getJSONObject(object1);
}

所以我的问题是如何读取这些值 aa bb cc ,不依赖于对象名称或对象数量( object1 object2 object3 )?

解决方案

看起来数组中的每个项只有一个键/值对,它保存另一个json对象,然后有几个。



如果是这种情况,那么你可以这样做:

  for( int i = 0; i< jsonArray.length(); i ++)
{
JSONObject jsonObject = jsonArray.getJSONObject(i);

JSONObject innerObject = jsonObject.getJSONObject(jsonObject.keys()。next()。toString());

///使用innerObject执行某些操作,其中包含aa,bb,cc
}

你只需抓住包装对象中的第一个键,然后使用它来获取内部json对象。


I have a JSON response like this.

{
"array": [
    {
        "object1": {
            "aa": "somevalue1",
            "bb": "somevalue2",
            "cc": "somevalue3"
        }
    },
    {
        "object2": {
            "aa": "somevalue4",
            "bb": "somevalue5",
            "cc": "somevalue6"
        }
    }
]}

Now I can get a JSON array from above response. I want read the value aa,bb,cc from object object1 and object2 in a for loop.

JSON is dynamic, I mean that object2 can also appear before object1 (in reverse order) and there is chances that I might get one more object(object3) with same structure OR only one (object1 or object2 or object3).

I dont want to do like this as I failed in :

JSONArray jsonArray = json.getJSONArray("array");
for (int i = 0; i < jsonArray.length(); i++) 
{
    JSONObject jsonObject = jsonArray.getJSONObject(i).getJSONObject("object1");
}

So my question is HOW can I read those values aa,bb,cc without depending on object name or number of object (object1 or object2 or object3)?

解决方案

It looks like each item in the array only has 1 key/value pair which holds another json object which then has several.

If this is the case, then you could probably do something like this:

for (int i = 0; i < jsonArray.length(); i++)
{
    JSONObject jsonObject = jsonArray.getJSONObject(i);

    JSONObject innerObject = jsonObject.getJSONObject(jsonObject.keys().next().toString());

    /// do something with innerObject which holds aa, bb, cc
}

You simply grab the 1st key in the wrapping object, and use that to grab the inner json object.

这篇关于如何使用动态Keyname解析JSON?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆