你的问题对我来说还是有点不清楚,但是我假设你想把这个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<>();
最后,我们遍历数据列表,提取t他在该列表中的每一项记录值的列表,然后遍历键,以便创建一个映射,从键记录值:
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是有效的。数据应该是一个对象而不是一个列表?列表中的键是否与数据对象的键匹配? – andersschuller
它是一个有效的JSON ..我们已经实现了类似于..键是数据库列...并且值数组(data1&data2)具有d11 d12和d21 d22,它们是列的相应值。每个data1&data2是单独的行。 。我们使用了arraylist来确保插入顺序。注意:我们必须避免在服务器端放置key:value对。因此需要在客户端解析这个JSON .. – AskQ
@andersschuller感谢您解决这个问题。 。我已经更新了正确的json ..问题依然存在.. – AskQ