-4

GET リクエストを使用して、echonest API からアーティスト (検索) を取得すると、次の JSON が返されます。

{
    "response": {
        "status": {
            "version": "4.2",
            "code": 0,
            "message": "Success"
        },
        "artists": [
            {
                "id": "ARR3ONV1187B9A2F49",
                "name": "Muse"
            }
        ]
    }
}

上記の JSON 文字列を次のような JSON オブジェクトに変換したい:

jso = new JSONObject(JSONstring);

次に、ID と名前の両方を文字列に保存します。まず、アーティストの配列を次のような JSON 配列に保存します。

jsa = jso.getJSONArray("artists");

これは、JSON エラー no value for artist を受け取る瞬間です。

ここで何が問題なのかわかりません。誰かが正しい方向に私を助けることができますか? ありがとう。

4

5 に答える 5

1

json 配列artistsは json オブジェクト内にありますresponse

したがって、最初にキーを使用してJsonオブジェクトを取得し、次にそれからresponsejson配列を取得する必要がありますartists

jsa = jso.getJSONObject("response");
jsa.getJSONArray("artists");
于 2015-09-22T08:53:04.240 に答える
1

Artists 配列はレスポンス JSON オブジェクトなので、最初にレスポンス データを取得してから、以下のようなアーティスト JSON 配列を取得します。

JSONObject response = jso.getJSONObject("response");
jsa = response.getJSONArray("artists");

それがあなたを助けることを願っています!!

于 2015-09-22T08:54:39.873 に答える
0

応答オブジェクト内にネストされているため、現在「親」オブジェクトのように「アーティスト」にアクセスしようとしていますが、これは実際には「応答」オブジェクトの子です。最初に json オブジェクトを取得して "response" にし、次に json 配列 "artists" を取得する必要があります。

于 2015-09-22T08:54:17.837 に答える
0

値が得られない理由は、ネストに従っていないためです。

ネストされたようなオブジェクトを受け取る必要があります。最初に MainObject に移動する必要があり、次にデータが "response" オブジェクトに格納されます。その後、「応答」オブジェクトから配列を受け取ることができます。

設計どおりの JSON のネストに従う必要があります。

このようにしてみてください..

JSONObject mainObj = new JSONObject(JSONstring);

 // Try to get Response Object from main JSON object then try to get array from it.
JSONObject responseObj = mainObj.getJSONObject("response");

// getting array from response object.
JSONArray artistArr = responseObj.getJSONArray("artists");

または、1行で実行できます..

JSONArray artistArr = mainObj.getJSONObject("response").getJSONArray("artists");
于 2015-09-22T08:54:32.127 に答える