Java 带有空字段的JSON对象

Java 带有空字段的JSON对象,java,android,json,foursquare,Java,Android,Json,Foursquare,我正在从foursquare获得一份场馆列表,我需要每个场馆的名称、地址和城市。这里我的问题是,如果地址或城市为空,它会给出一个错误并显示“JSON异常:地址没有值”。我尝试了不同的方法来解决它,但没能解决问题。我希望你能帮助我。多谢各位 JSONObject b = venues.getJSONObject(i); JSONObject location = b.getJSONObject("location"); String name = ""; String address = "";

我正在从foursquare获得一份场馆列表,我需要每个场馆的名称、地址和城市。这里我的问题是,如果地址或城市为空,它会给出一个错误并显示“JSON异常:地址没有值”。我尝试了不同的方法来解决它,但没能解决问题。我希望你能帮助我。多谢各位

JSONObject b = venues.getJSONObject(i);
JSONObject location = b.getJSONObject("location");

String name = "";
String address = "";
String city = "";

if ("".equals(b.get("name"))) {
    //  Toast.makeText(Activity2.this,"Name of Place: " +name+ " Location: "+country, Toast.LENGTH_SHORT).show();
    name = "No place ";
} else {
    name = b.getString("name");
}

if ("".equals(location.getString("address"))) {
    address = "No address";
} else {
    address = location.getString("address");
}

if ("".equals(location.getString("city"))) {
    city = "No city";
} else {
    city = location.getString("city");
}

name = "Name of the place: " + name; 
// + " Address: "+ address + "  City: " + city;
list.add(name);
.Json对象“
位置
”不包含
地址
值,您必须添加另一个求值

location.getString("address") = null;
例如:

if ((location.getString("address") = null) || "".equals(location.getString("address"))) {
    address = "No address";
} else {
    address = location.getString("address");
}
或者使用
optString()
方法查看selbie的解决方案

String address = location.optString("address", ""); //where "" is a default value.

您可能需要在调用getString之前调用has()方法以避免异常。但是还有一种更简单的方法——只需使用而不是getString,如果值不存在,它将返回“fallback”字符串

String name = location.optString("name", "No Place");
String address = location.optString("address", "No Address");
String city = location.optString("city", "No City");

谢谢,伙计,很高兴知道这个optString函数