如何解析此JSON字符串

时间:2012-02-10 22:40:25

标签: java android json

我正在尝试将此字符串解析为java,但我不断收到错误。

{"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 Value ...然后显示temp中的内容。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

名为“sources”的数组有几个级别。你需要遍历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"
         }
      ]
   }
}

答案 1 :(得分:0)

看起来“sources”数组位于“result”对象中。因此,您需要获取该对象,然后从中获取数组:

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

答案 2 :(得分:0)

你的json应该有顶级对象,从那里你需要获得子对象。有关详细信息,请参阅此link