-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 和 name 都保存到字符串中,首先我想将艺术家数组保存在 JSON 数组中,如下所示:

jsa = jso.getJSONArray("artists");

这是我得到 JSON 错误对艺术家没有价值的那一刻。

我无法弄清楚这里出了什么问题,任何人都可以帮助我朝着正确的方向前进吗?谢谢。

4

5 回答 5

1

json 数组artists在 json 对象内response

所以你必须先获取带键的Json对象response,然后从中获取jsonartists数组

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

"artists" array is inside the "response" object, you can get the "artists" array using following code:

jsonArray = jso.getJSONObject("response").getJSONArray("artists");
于 2015-09-22T09:21:07.473 回答
0

您将它嵌套在响应对象中,因此您当前正在尝试访问“艺术家”,就像它是“父”对象一样,但这实际上是“响应”对象的子对象。您需要先检索 json 对象以“响应”,然后获取 json 数组“艺术家”。

于 2015-09-22T08:54:17.837 回答
0

您没有获得价值的原因是因为您没有遵循嵌套。

你必须接收像它嵌套的对象。首先,您必须转到 MainObject,然后将数据存储在“响应”对象中。之后,您可以从“响应”对象接收数组。

您必须像设计的那样遵循 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");

或者你可以在一行中完成..

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