2012-02-10 156 views
0

我想解析這個字符串到java中,但我不斷收到錯誤。如何解析這個JSON字符串

{"id":1,"jsonrpc":"2.0","result":{"limits":{"end":3,"start":0,"total":3},"sources":[{"file":"/media/storage/media/re Music/","label":"re Music"},{"file":"/media/storage/media/ra Music/","label":"ra Music"},{"file":"addons://sources/audio/","label":"Music Add-ons"}]}} 

當我使用此代碼...

String temp = //json code returned from up above 
JSONObject obj = new JSONObject(temp); 
JSONArray array = obj.getJSONArray("sources"); 

我得到一個錯誤說org.json.JSONObject值...,然後顯示的是在溫度。任何幫助?

回答

2

命名爲「源」的陣列是幾個層次深。你需要遍歷到json。

代碼格式化這個東西幫助...

http://jsonformatter.curiousconcept.com/

{ 
    "id":1, 
    "jsonrpc":"2.0", 
    "result":{ 
     "limits":{ 
     "end":3, 
     "start":0, 
     "total":3 
     }, 
     "sources":[ 
     { 
      "file":"/media/storage/media/re Music/", 
      "label":"re Music" 
     }, 
     { 
      "file":"/media/storage/media/ra Music/", 
      "label":"ra Music" 
     }, 
     { 
      "file":"addons://sources/audio/", 
      "label":"Music Add-ons" 
     } 
     ] 
    } 
} 
+0

好吧,這更有意義,但如何進入這樣的嵌套語句? 是否這樣? JSONArray ar = obj.getaray(「results」) – 2012-02-10 22:46:35

+0

@ user987103 getarray是什麼?什麼是「結果」? – 2012-02-10 22:49:34

+0

我不知道你正在使用的確切庫的細節,(你可能沒有真正地告訴我們,儘管我可能從包名中找出它)。通常,你會做obj.get(「result」)。getArray(「sources」)。檢查你的javadoc的方法名稱的確切細節 – Gus 2012-02-10 22:50:59

0

它看起來像「源」數組是在「結果」對象。所以,你需要得到該對象,然後從這樣得到的數組:

JSONObject obj = new JSONObject(temp); 
JSONObject result = obj.getJSONObject("result"); 
JSONArray array = result.getJSONArray("sources"); 
+0

每次我把結果字符串放入一個JSONObject中,它會拋出相同的異常 – 2012-02-10 22:52:32

+0

你能顯示更新的源代碼嗎? – CaseyB 2012-02-10 23:12:36

0

您的JSON應該有頂級對象,從那裏你需要獲得子對象。有關更多詳細信息,請參閱此link

+0

儘管如此,一旦我將該臨時字符串放入JSONObject中,它會引發錯誤。我知道我必須進入嵌套結果,但它只是拋出該錯誤。 – 2012-02-10 22:50:48