如何处理来自JSONObject中的RESTful API的`null`字符串?

时间:2018-06-09 17:54:52

标签: java android json

这是一个服务返回,它为我们提供了用户的个人资料信息:

{
   email: 'someone@example.com',
   pictureUrl: 'http://example.com/profile-pictures/somebody.png',
   phone: null,
   name: null
}

现在我们在Android应用程序中获取此JSON,并将其转换为JSONObject模型:

JSONObject profileInfo = new JSONObject(profileInfoJson);

我们将UI视图绑定到数据:

email.setText(profileInfo.getString("email"));
phone.setText(profileInfo.getString("phone"));
name.setText(profileInfo.getString("name"));

然后在我们的TextViewEditView我们有null字符串,而不是什么都没有。

我们可能会使用if-then语句检查null值,但这对于包含这么多字段的实际应用程序来说太过分了。

有没有办法配置JSONObject以优雅地处理null字符串?

更新:我按照建议使用了optString后备广告,但它没有效果:

firstName.setText(profileInfo.optString("firstName", ""));

结果与EditText中的null相同。

1 个答案:

答案 0 :(得分:3)

使用optString,如果找不到合适的值,则会返回第二个参数而不是异常或null

phone.setText(profileInfo.optString("phone","nophone"));
name.setText(profileInfo.optString("name","noname"));
  

返回按名称映射的值(如果存在),强制(尝试强制转换)if   如果不存在这样的映射,则必须或回退(返回第二个参数)。