这是一个服务返回,它为我们提供了用户的配置文件信息:
{
email: 'someone@example.com',
pictureUrl: 'http://example.com/profile-pictures/somebody.png',
phone: null,
name: null
}
现在,我们在我们的安卓应用程序中获得这个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
。
发布于 2018-06-10 01:58:24
使用optString
,如果找不到合适的值,则返回第二个参数,而不是exception或null
phone.setText(profileInfo.optString("phone","nophone"));
name.setText(profileInfo.optString("name","noname"));
返回按名称映射的值,如果该值存在,则强制(尝试强制转换)该值,如果不存在此类映射,则返回fallback(返回第二个参数)。
https://stackoverflow.com/questions/50777051
复制相似问题