2012-02-10 126 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