这是一个服务返回,它为我们提供了用户的个人资料信息:
{
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"));
然后在我们的TextView
或EditView
我们有null
字符串,而不是什么都没有。
我们可能会使用if-then语句检查null
值,但这对于包含这么多字段的实际应用程序来说太过分了。
有没有办法配置JSONObject
以优雅地处理null
字符串?
更新:我按照建议使用了optString
后备广告,但它没有效果:
firstName.setText(profileInfo.optString("firstName", ""));
结果与EditText
中的null
相同。
答案 0 :(得分:3)
使用optString
,如果找不到合适的值,则会返回第二个参数而不是异常或null
phone.setText(profileInfo.optString("phone","nophone"));
name.setText(profileInfo.optString("name","noname"));
返回按名称映射的值(如果存在),强制(尝试强制转换)if 如果不存在这样的映射,则必须或回退(返回第二个参数)。