如何使用动态Keyname解析JSON? [英] How to Parse JSON with dynamic Keyname?
问题描述
我有这样的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 $ c $之前c>(以相反的顺序)并且我可能会再获得一个具有相同结构的对象(
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屋!