我需要读取以下形式的JSON文件:
{
"Data":[{
"foo":"22",
"bar":"33",
"array":[
{
"1foo":"22",
"1bar":"33"
},
{
"2foo":"22",
"2bar":"33",
}
],
"anotherData":{
"foofoo":"22",
"barbar":"33"
},
"some more data":"11",
"some more data":"11"
},
{and the cycle here starts again from -->
"foo":"22",
"bar":"33",
"array":[
我的问题是:如何访问单个元素,有时是JSONObject,有时是JSONArray。我尝试使用org.json库,但无法访问此行之后的任何内容-〉“array”:[。我尝试了JSONObject和JSONArray的各种组合,但都无济于事。
我最新的代码看起来像这样:
List<Data> data= new ArrayList<>();
String rawJson = getJsonAsString();
JSONObject outer = new JSONObject(rawJson);
JSONArray jArr= outer.getJSONArray("Data");
JSONObject inner= outer.getJSONObject("array");
for(int i =0; i<jArr.length(); i++){
JSONObject jsonEvent = jArr.getJSONObject(i);
String foo = jsonEvent.getString("foo"); <-- this works,
String 1foo = jsonEvent.getString("1foo"); <-- but this doesn't and i cant access it
我尝试了几十种不同的解决方案(我自己也尝试过,也试图在这里找到一些东西,但每个嵌套数组的情况都是不同的,我不能把这些解决方案加在一起来得到我的情况的答案)
1条答案
按热度按时间rkttyhzu1#
如果美化原始JSON字符串,可以提高可读性:
因此,请坚持使用以下代码:
jArr
现在已填充对象的数组。要循环遍历Object数组,可以使用一个for-loop,您已经正确地执行了该操作。
现在,每个
jsonEvent
都包含您的Object,您可以通过它们的类型访问Object。例如,如果您想访问
foo
,可以用途:由于
1foo
位于array
的第一个对象中,您需要按如下方式访问它:而要访问
foofoo
,因为它是JSON ObjectanotherData
的属性,所以需要先获取anotherData
作为JSONObject
,然后才能访问foofoo
:因此,for循环中的完整代码应该如下所示: