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);
}
我正在 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);
}