你的問題對我來說還是有點不清楚,但是我假設你想把這個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