google 位置 api json 响应显示关键评级不可用

google places api json response showing unavailability of a key- rating

我正在 google 个地方 api 搜索附近的酒店,在 JSON 响应中,如果某些酒店有 "rating" 键可用,而对于某些酒店酒店 "rating" 钥匙不可用。因此 json 解析器找不到某些 json 对象的评级键 - 它通过给出错误来停止解析 ->

12-19 22:00:06.726 3811-3811/com.example.gplacesapp W/System.err: org.json.JSONException: No value for rating

我想在显示列表中包含评分,但我做不到.. 如何解决这个问题,有评分的酒店可以相应地解析并显示在列表中,没有评分的酒店我可以在那里写不可用

这里是JSON解析代码->

private ArrayList<Hotels> parseJson(String s) {
    if(hotellist!=null)
        hotellist.clear();
    if(s!=null){
        try {

            JSONObject jobj=new JSONObject(s);
            Log.i("MainActivity","Json Object is ->" +jobj.toString());
            Toast.makeText(getApplicationContext(),jobj.toString(),Toast.LENGTH_SHORT).show();
            JSONArray jarr=jobj.getJSONArray("results");



            Log.i("MainActivity","No of elements : "+ jarr.length());
            Toast.makeText(getApplicationContext(),"No of elements : "+ jarr.length(),Toast.LENGTH_SHORT).show();
            for (int i = 0; i < jarr.length(); i++) {
                JSONObject res = jarr.getJSONObject(i);
                Hotels wthr = new Hotels();

                String nam = res.getString("name");
                wthr.setName(nam);

                String rat = res.getString("rating");
                wthr.setRating(rat);

                String addr = res.getString("vicinity");
                wthr.setVicinity(addr);

                Log.i("MainActivity", "Name:" + nam);
                Toast.makeText(getApplicationContext(), "Writing name : " + nam, Toast.LENGTH_SHORT).show();
                Log.i("MainActivity", "Rating:" + rat);
                Toast.makeText(getApplicationContext(), "Writing rating : " + rat, Toast.LENGTH_SHORT).show();
                Log.i("MainActivity", "Vicinity:" + addr);
                Toast.makeText(getApplicationContext(), "Writing Address : " + addr, Toast.LENGTH_SHORT).show();
            }


            return hotellist;

        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    return null;
}

您可以使用'has'方法来检查密钥是否存在。

 if (res.has("name")) {
               String nam = res.getString("name");
                wthr.setName(nam);
}

 if (res.has("rating")) {
                String rat = res.getString("rating");
                wthr.setRating(rat);
}else{
 wthr.setRating(0);
}