【发布时间】:2013-08-16 02:01:17
【问题描述】:
我正在开发一个使用 JSON 进行服务器通信的 Android 应用程序,当我尝试解析我的 json 文件时遇到了一个奇怪的问题。
这是我来自服务器的 json
{
"street2": null,
"province": null,
"street1": null,
"postalCode": null,
"country": null,
"city": null
}
我通过在我的地址 Json 对象上调用 String city = address.optString("city", "") 来获取 City 的值。对于这种情况,我希望 city 为空(这就是 optString 的用途,不是吗?)但实际上它包含字符串“null”。因此,进一步的 null 或 isEmpty 检查将返回 false,因为 String 包含文本。如果我打电话给address.isNull("city"),它会返回 true,这是正确的。只有optString 失败。
我在 Google 或 Stackoverflow 上找不到任何关于此问题的信息。我真的不明白它是如何发生的,因为我认为optString 会完全符合我的预期。有人知道这里出了什么问题吗?
【问题讨论】:
-
null是 java 中字符串的有效值(以及我知道的所有其他编程语言),所以它不选择后备是有道理的,如果它的键根本不存在,它会采取后备措施 -
谢谢。这不是我对 optString 的预期行为,但开发人员似乎有不同的想法。必须自己检查。