使用其他 jsonarray 值作为键获取 jsonarray 的值
Get values of jsonarray using other jsonarray values as a key
我正在从服务器关注 json:
{
"Data": [
{
"Record": [
" d11",
"d12"
]
},
{
"Record": [
" d21",
"d22"
]
}
],
"Keys": [
"Key1",
" key2"
]
}
我想检索 记录 值,这些值相对于 keys 值有序(键 1、键 2?
注意:仅使用 org.json api。
你的问题对我来说还是有点不清楚,但我假设你想把 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}]
我正在从服务器关注 json:
{
"Data": [
{
"Record": [
" d11",
"d12"
]
},
{
"Record": [
" d21",
"d22"
]
}
],
"Keys": [
"Key1",
" key2"
]
}
我想检索 记录 值,这些值相对于 keys 值有序(键 1、键 2?
注意:仅使用 org.json api。
你的问题对我来说还是有点不清楚,但我假设你想把 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}]