2012-10-29 44 views
4

我已經通過各種線程閱讀並發現類似的問題,但一直在爲我的特定問題尋找解決方案時非常失敗。將JSONObject轉換爲List或JSONArray的簡單代碼?

JSONObject orr = (JSONObject)orderRows.get("orderRows"); 
System.out.println("data in orr = " + orr + "orr's type = " + orr.getClass()); 

返回:在ORR

數據= { 「470」:[{ 「locationId」:2, 「量」:1, 「的productId」:1007}], 「471」 :[{ 「locationId」:2, 「量」:1, 「的productId」:1008}]} ORR的 類型=類org.json.simple.JSONObject

我試圖獲得這種數據轉換成一個數組/列表/任何可以使用密鑰的地方,470,471來檢索數據。

任何建議或指針讚賞許多感謝...

澄清:

JSONObject orr = (JSONObject)orderRows.get("orderRows"); 
     JSONArray orderOne = (JSONArray)orr.get("471"); 
     System.out.println(orderOne); 
     System.out.println(orderOne.get(0)); 
     JSONObject orderOneKey = (JSONObject)orderOne.get(0); 
     System.out.println(orderOneKey.get("productId")); 

這是我後,但顯然我不能做orr.get(「471 「),因爲我不知道這個數字是什麼。

編輯: 顯然,我不能回答我的問題8小時:

由於從朋友和一些擺弄幫助下,我找到了解決辦法,我敢肯定,這不是最有說服力的,但這正是我之後:

for(Object key: orr.keySet()) { 

       JSONArray orderOne = (JSONArray)orr.get(key); 
       JSONObject ordervalue = (JSONObject)orderOne.get(0); 
       System.out.println(ordervalue.get("productId")); 
     } 

感謝您的幫助和建議傢伙。

回答

1

由於從朋友和一些擺弄幫助下,我找到了一個解決方案,我敢肯定,這不是最有說服力的,但它正是我一直在後:

for(Object key: orr.keySet()) { 

       JSONArray orderOne = (JSONArray)orr.get(key); 
       JSONObject ordervalue = (JSONObject)orderOne.get(0); 
       System.out.println(ordervalue.get("productId")); 
     } 

感謝您的幫助和建議傢伙。

0

響應中的數據類型爲JSONObject(請參閱大括號{})。所以頂級對象有兩個「字段」,470和471.這些字段返回的數據都是數組。這些數組每個只有一個項目,它們都是對象。因此,這裏是獲取數據的例子:

JSONObject jsonObject = (JSONObject)orderRows.get("orderRows"); 
JSONArray firstArray = jsonObject.getJSONArray("470"); 
JSONArray secondArray = jsonObject.getJSONArray("471"); 
JSONObject firstObject = firstArray.get(0); 
int locationId = firstObject.getId("locationId"); 
/*...etc...*/ 

現在,一旦你拉出來,你可以將這些數據轉化爲你喜歡,使其更加友好,從這個角度提出訪問的任何結構。

+0

謝謝,問題是我不知道這些數字470和471是什麼,我知道他們在這種情況下,因爲我已經打印出來。 非常感謝 – Mark

+0

感謝朋友的幫助和一些小提示,我找到了一個解決方案,我敢肯定這不是最令人驚歎的,但這正是我之後的: – Mark

0

您可以使用提供數據綁定支持的庫。 你可以嘗試Genson http://code.google.com/p/genson/,它快速,易於使用,並有一些不錯的功能。這裏是你的問題的例子:

// first define a class matching your json 
class Product { 
    private int locationId; 
    private int quantity; 
    private int productid; 

    // setter & getters 
} 

// then use genson 
Map<String, Product[]> productsMap = new Genson().deserialize(jsonStream, new GenericType<Map<String, Product[]>>() {}); 
+0

謝謝,我希望避免使用任何更多的庫。我會看看,謝謝。 – Mark

0

你也可以這樣做:

JSONArray jsonArr = new JSONArray(); 
jsonArr.put(jsonObj); 
在你想要把整個JSON對象JSON陣列的情況下

相關問題