我有一个从服务器返回的响应,我期待一个字符串值,所以我写了这个来解析它
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);
最佳答案
hack 看起来适合您的情况。
另一种选择是使用 boolean isNull(String key)
方法,然后根据返回的 boolean 值继续您的选择。比如:
public String getMessageFromServer(JSONObject response) {
return ((response.has("message") && !response.isNull("message"))) ? response.getString("message") : null;
}
但是,我认为您当前的实现与此之间没有太大区别。
关于java - JSON.getString 不返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13118146/