java - 具有空字段的 JSON 对象

标签 java android json foursquare

我正在从 foursquare 获取一份 field 列表,我需要我获得的每个 field 的名称、地址和城市。这里我的问题是,如果地址或城市为空,它会给出错误并显示“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);

最佳答案

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

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

关于java - 具有空字段的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22735090/

相关文章:

java - 包含指令

javascript - 如何使用 jQuery 将 2 个 td 合并到一个 td 中?

json - 你能通过一次查询获取 Rally API 要求、缺陷和所有任务吗

java - 部分枚举建模

java - 如何正确删除Android中按钮周围的填充(或边距?)?

java - 使用 ScheduledExecutorService 方法定期运行一批任务

android - 如何将 Actionbar 项目与 Viewpager + Fragments 一起使用

android - 如何在 flutter 中将 DateTime 转换为 TZDateTime?

android - 如何让一个Activitly正确的观察Lifecycle事件

c# - 从 JSON 字符串中获取 C#-Object-Array