2012-02-10 10 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") –

+0

@ user987103 'getarray'とは何ですか? 「結果」とは何ですか? –

+0

あなたが使用しているライブラリの詳細はわかりませんが(パッケージ名からは分かるかもしれませんが)通常、obj.get( "result")。getArray( "sources")を実行します。メソッド名の正確な詳細についてはjavadocを確認してください – Gus

0

"ソース"配列が "結果"オブジェクトにあるようです。したがって、そのオブジェクトを取得してから、次のような配列を取得する必要があります。

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

結果の文字列をJSONObjectに入れるたびに、同じ例外がスローされます –

+0

更新されたソースを表示できますか? – CaseyB

0

...このようなものを助けるあなたのJSONを使用すると、子オブジェクトを取得する必要があり、そこから、トップレベルのオブジェクトを持つ必要があります。詳細はlinkを参照してください。

+0

それは問題ですが、一旦その一時文字列をJSONObjectに入れると、エラーがスローされます。私はネストされた結果に入る必要があることを知っていますが、それは単にそのエラーをスローします。 –

関連する問題