2015-10-09 68 views
0

我越來越從服務器以下JSON:
獲取使用其他jsonarray值jsonarray的值作爲重點

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

}


我想要檢索記錄值這是訂購相對於值(key1,key2?

注意:僅使用org.json api。

+0

首先,我不認爲JSON是有效的。數據應該是一個對象而不是一個列表?列表中的鍵是否與數據對象的鍵匹配? – andersschuller

+0

它是一個有效的JSON ..我們已經實現了類似於..鍵是數據庫列...並且值數組(data1&data2)具有d11 d12和d21 d22,它們是列的相應值。每個data1&data2是單獨的行。 。我們使用了arraylist來確保插入順序。注意:我們必須避免在服務器端放置key:value對。因此需要在客戶端解析這個JSON .. – AskQ

+0

@andersschuller感謝您解決這個問題。 。我已經更新了正確的json ..問題依然存在.. – AskQ

回答

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<>(); 

最後,我們遍歷數據列表,提取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}]