java - JSON.getString 不返回 null

标签 java json org.json

我有一个从服务器返回的响应,我期待一个字符串值,所以我写了这个来解析它

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/

相关文章:

java - 解压文件不会检索文件夹

java - 使用 Apache Wink 通过 Java REST 服务返回 excel 文档

python - Flask 中的 JSON 数据是字符串还是字典?

python - 如何解析 JSON 格式的数据

json - Grails对请求和响应的通用JSON处理

java - 在 Java 中清理 JSON 字符串值

java - 查询字符串中扁平化 JSON 对象的 Struts2 类型转换

java - Java 中的 Action 事件

java - 不要使用android内置的org.json

java - 使用 org.json 将 XML 转换为 JSON 时出现 NoSuchMethod 错误