Android: org json jsonexception не имеет значения для - PullRequest
0 голосов
/ 30 ноября 2018

Я использую этот JSON URL: https://www.theaudiodb.com/api/v1/json/1/search.php?s=coldplay

{
"artists": [
    {
        "idArtist": "111239",
        "strArtist": "Coldplay",
        "strArtistStripped": null,
        "strArtistAlternate": "",
        "strLabel": "Parlophone",
        "idLabel": "45114",
        "intFormedYear": "1996",
        "intBornYear": "1996",
        "intDiedYear": null,
        "strDisbanded": null,
        "strStyle": "Rock/Pop",
        "strGenre": "Alternative Rock",
         etc
}

, и это мой код Android Java:

    void syncToUrl() {
    AsyncHttpClient client = new AsyncHttpClient();
    String url = "https://www.theaudiodb.com/api/v1/json/1/search.php?s=coldplay";

    client.get(url, new TextHttpResponseHandler() {
        @Override
        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
            Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onSuccess(int statusCode, Header[] headers, String responseString) {
            parseAndShow(responseString);

        }
    });
}
void parseAndShow(String responce) {
    try {
        JSONObject artistBio = new JSONObject(responce);

        artistNickname.setText(artistBio.getString("strArtist"));

    } catch (Exception e) {
        Toast.makeText(MainActivity.this, e.toString(), Toast.LENGTH_SHORT).show();
        Error.setText(e.toString());
    }
}

Но я все еще получаю эту ошибку: org.json.jsonexceptionнет значения для strArtist.

StrArtist имеет это значение "Coldplay", но почему я получаю эту ошибку?

1 Ответ

0 голосов
/ 30 ноября 2018

Вы можете получить значение strArtist следующим образом:

JSONObject artistBio = new JSONObject(responce);
JSONArray artists = artistBio.getJSONArray("artists");

for (int i=0; i < artists.length(); i++) {
  JSONObject object = artists.getJSONObject(i);
  String name = actor.getString("strArtist");
  artistNickname.setText(artistBio.getString("strArtist"));
}

РЕДАКТИРОВАТЬ

Поскольку у вашего json есть только один объект внутри массива, вы можетепропустите реализацию цикла for и сразу используйте следующее:

JSONObject object = artists.getJSONObject(0);
String name = actor.getString("strArtist");
artistNickname.setText(artistBio.getString("strArtist"));
...