Я получаю сообщение об ошибке при разборе заданного значения при попытке проанализировать указанный формат JSON Android - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующий тип структуры json, который исходит от URL.

 [{
    "id": 1,
    "name": "TV",
    "fromcenter": {
        "car": "60 Mins",
        "bus": "20 Mins"
    },
    "location": {
        "latitude": -33.7181,
        "longitude": 10.3160
    }
}, {
    "id": 2,
    "name": "Fridge",
    "fromcenter": {
        "car": "30 Mins"
    },
    "location": {
        "latitude": -33.8433,
        "longitude": 11.2411
    }
}, {
    "id": 3,
    "name": "Mixie",
    "fromcenter": {
        "car": "20 Mins",
        "bus": "40 Mins"
    },
    "location": {
        "latitude": -3.8910,
        "longitude": 11.27777
    }
}]

Я могу проанализировать все, кроме «шины», потому что шина недоступна в id 2. Поэтому я получаю ошибку, так как значение «шина» не найдено. JSONException.

Дайте мне знать, как это решить? Ниже я попробовал.

try {
        JSONArray array = new JSONArray(response);
        goodModelArrayList = new ArrayList<>();
        for (int i = 0; i < array.length(); i++) {
            JSONObject e = array.getJSONObject(i);
            spinnerModel = new MyTransport();
            fromcenter = new Fromcenter();
            location = new Location();
            for (int j = 0; j < e.length(); j++) {
                JSONObject object = e.getJSONObject("location");
                latitude = object.getString("latitude");
                longitude = object.getString("longitude");
            }
            for (int k = 0; k < e.length(); k++) {
                JSONObject object = e.getJSONObject("fromcenter");
                car = object.getString("car");
                //bus = object.getString("bus"); //I am not able to get the bus. It throws JSONException error.
            }
            spinnerModel.setId(String.valueOf(e.getString("id")));
            spinnerModel.setName(e.getString("name"));
            spinnerModel.setFromcenter(car);
            //spinnerModel.setBus(bus); //I am not able to store the datas.
            spinnerModel.setLocation(latitude);
            spinnerModel.setLocations(longitude);
            goodModelArrayList.add(spinnerModel);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

Ответы [ 2 ]

3 голосов
/ 23 мая 2019

вы можете опросить, если объект имеет свойство перед чтением

if (object.has("bus")) {
    bus = object.getString("bus");
}
0 голосов
/ 23 мая 2019

Прямо на одно слово.

Используйте optString вместо getString

optString устраняет эту проблему. Автобус отсутствует во 2-м пункте.

Так что используйте

String bus= object.optString("bus");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...