使用其他jsonarray值作为键获取jsonarray的值

时间:2015-10-09 16:47:46

标签: java json org.json

我从服务器跟踪json:

{
"Data": [
    {
        "Record": [
            " d11",
            "d12"
        ]
    },
    {
        "Record": [
            " d21",
            "d22"
        ]
    }
],
"Keys": [
    "Key1",
    " key2"
]

}


我想检索关于有序记录值(key1,key2?

注意:仅使用org.json api。

1 个答案:

答案 0 :(得分:1)

我的问题对我来说仍然有点不清楚,但我假设您想将JSON转换为记录列表,其中每个记录(例如)包含键列表中的键和数据列表中的值。

为了实现这一点,我们首先将JSON解析为JSONObject

String json = " ... ";
JSONTokener tokener = new JSONTokener(json);
JSONObject jsonObject = new JSONObject(tokener);

然后我们提取密钥列表和数据列表:

JSONArray data = jsonObject.getJSONArray("Data");
JSONArray keys = jsonObject.getJSONArray("Keys");

并定义一个列表以包含我们的输出:

List<Map<String, String>> records = new ArrayList<>();

最后,我们遍历数据列表,提取该列表中每个项目的记录值列表,然后迭代键以创建从键到记录值的映射:

for (int i = 0; i < data.length(); i++) {
    JSONObject dataItem = data.getJSONObject(i);
    JSONArray recordValues = dataItem.getJSONArray("Record");

    Map<String, String> record = new HashMap<>();

    for (int j = 0; j < keys.length(); j++) {
        String key = keys.getString(j);
        String value = recordValues.getString(j);
        record.put(key, value);
    }

    records.add(record);
}

当我们打印records的值时,我们得到的结果如下:

[{Key1= d11,  key2=d12}, {Key1= d21,  key2=d22}]