【发布时间】:2012-10-29 08:31:09
【问题描述】:
我有一个从服务器返回的响应,我期待一个字符串值,所以我写了这个来解析它
public String getMessageFromServer(JSONObject response) {
String msg = response.getString("message");
return msg;
}
然后,当我在代码中使用它并从服务器获取null 值时,该函数不会返回null,而是返回"null"。
我见过this bug report,但我没有看到解决方案。
编辑:
我有一个小技巧可以解决这个问题,但它很难看,我正在寻找更好的解决方案:
public String getMessageFromServer(JSONObject response) {
Object msg = response.get("message");
if(msg == null) {
return null;
}
return (String) msg;
}
编辑 #2:
多年后,回到这个问题,我发现我在这里并没有完全错,JSONObject 有一个内置的方法。
从JSONObject 获取可选值的方法是使用this method JSONObject.optString("message", DEF_VALUE);
【问题讨论】:
-
没关系,但这是一个丑陋的黑客,我不喜欢它
-
为什么是丑陋的或黑客?你做得很好
-
这很难看,因为我期望一个字符串值(可以是
null)但必须处理类型转换。 -
在第一个示例中检查“null”是否会不那么难看?
-
@thepoosh - 你过早地优化了。
==和String.equals之间的差异不大可能很大。