2015-08-09 43 views
0

我一直在尋找很長一段時間,沒有解決方案爲我工作。 我有使用一些環路檢索來自JSON對象中的值,和嵌套值的數量是隨機的這些可以是1或者可以是10。 JSON看起來像這樣:使用循環讀取嵌套的json對象

{ 
    "keyInfo":[ 
     { 
     "name":"ipek", 
     "key":"1221" 
     }, 
     { 
     "name":"ipek", 
     "key":"1221" 
     } 
    ], 
    "terminalInfo":{ 
     "dateExp":"2-2-2", 
     "deviceId":"1222", 
     "tid":"122" 
    } 
} 

我已經嘗試了很多的解決方案的其中之一是這樣的:

JSONObject jsonObject =new JSONObject(jsonString); 
JSONObject jsonChildObject = (JSONObject)jsonObject.get("keyInfo"); 
Iterator iterator = jsonChildObject.keys(); 
String key = null; 
while(iterator.hasNext()){ 
    key = (String)iterator.next(); 
    System.out.println("inval value: " 
     + ((JSONObject)jsonChildObject.get(key)).get("inval")); 
} 

但他們都沒有爲我工作請幫助。 感謝提前。

+0

您提供的json示例不包含密鑰「文件」。 json是否爲「files」鍵提供了值,而「jsonString」是否大於您提供的值? –

+0

這是我編輯它的錯誤,它基本上不是文件,它是keyInfo。 – Talib

+0

你有沒有考慮過使用像傑克遜這樣的對象映射器? – hzpz

回答

0

您正在嘗試使用數組作爲映射。 jsonChildObject實際上是一個JSONArray。它沒有鑰匙;例如,您可以多次使用相同的{"name":"ipek","key":"1221"}。如果您知道key在此數組中的項目中是唯一的,那麼您可以嘗試根據需要構建一個HashMap,但是您擁有的結構肯定是一個數組。