簡體   English   中英

嘗試解析給定的json格式的android時,解析給定的值時出現錯誤

[英]I am getting error parsing the given value when tried to parse the given json format android

我有以下類型的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
    }
}]

我能夠解析除“ bus”以外的所有內容,因為該總線在id 2中不可用。因此,由於找不到“ bus”值,因此出現了錯誤。 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();
    }

您可以在讀取對象之前詢問該對象是否具有該屬性

if (object.has("bus")) {
    bus = object.getString("bus");
}

直接說一個字。

使用optString代替getString

optString消除了此問題。 公交車不在第二項中。

所以用

String bus= object.optString("bus");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM