2016-01-27 16 views
0

我正在嘗試完成我的Android應用程序的一部分,使用戶可以輸入URL並從中取出JSON數組數據。目前,該應用程序需要用戶的URL,並存儲該字符串的東西,看起來像這樣的:工作的偉大在編譯時數據模式未知時從URL解析JSON數組

{ 
"name": "Demo", 
"currentdistance": "0", 
"goals": [ 
    { 
     "goal": { 
      "depth": "2", 
      "goal": "2" 
     }, 
     "goal": { 
      "depth": "6", 
      "goal": "4" 
     }, 
     "goal": { 
      "depth": "4", 
      "goal": "3" 
     } 
    } 
] 

}

現在我發現有很多的解決方案(如this),但他們認爲你提前知道關鍵值是什麼。我想從編譯時未知的源創建一個JSON數組,並且可以從一個鍵到多個鍵。

我試過只是將字符串保存爲JSON對象,然後使用.put將它添加到數組中,但如果數據具有多個鍵,則沒有多大用處。一旦我從URL獲得數據,我必須能夠解析和對待就像是一個真正的JSON數組。

我不關心錯誤檢查的URL現在,所以只是假設給應用程序的URL是一個正確的HTTP JSON文本,如上所示。

任何幫助,將不勝感激!

+1

http://stackoverflow.com/a/13573965/1979882遍歷所有密鑰讀取這個答案 – Vyacheslav

+0

嗯,好吧,如果你不知道的名字你感興趣的鑰匙,你究竟知道你對什麼感興趣?暫時忘記編程。作爲雪貂,您將使用什麼算法來確定您希望從JSON獲得哪些數據子集?請記住,JSON可以是任何東西,因此可能有零個,一個或N個你想要的東西。 – CommonsWare

+0

這裏我的應用程序的這一部分只是整個程序的一部分。該程序允許用戶連接許多代碼「模塊」,並將輸入和輸出串聯起來,從而製作更復雜的應用程序。我的這個模塊的目標是從URL中獲取JSON數據到一個適當的JSON數組中,以便它可以被應用程序的其他模塊使用。防爆。有人想在這裏連接另一個模塊到我的URLtoJSONArray模塊的輸出。只有用戶關心密鑰,一旦他們得到他們,我自己作爲程序員不關心他們是什麼,除了他們是正確的。 – SirFerret

回答

1

不能。如果您不確定是否知道JSON模式,則無法將其解析爲POJO(普通Java對象),因爲Java是強類型語言。您可以將自定義JSON字符串解析爲某些動態語言(如Javascript)中的對象。

如果你想瀏覽你的json字符串的所有鍵值。 Sample code

jObject = new JSONObject(contents.trim()); 
Iterator<?> keys = jObject.keys(); 

while(keys.hasNext()) { 
    String key = (String)keys.next(); 
    if (jObject.get(key) instanceof JSONObject) { 

    } 
} 

希望這有助於:)