首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在grails中解析JSONObject.NULL时如何获得真正的null值而不是JSON值

问在grails中解析JSONObject.NULL时如何获得真正的null值而不是JSON值
EN

Stack Overflow用户
提问于 2011-10-23 00:08:44
回答 3查看 22K关注 0票数 14

我正在尝试使用grails.converters.JSON库解析Grails中的一些JSON。我有一个字段,它将包含一个字符串或一个空值。当我解析JSON并获取字段时,null值返回为JSONObject.NULL类型。当检查!= null时,这是不好的,因为JSONObject.NULL被计算为非null (不适用于null检查)

代码语言:javascript
复制
def obj = JSON.parse('{"date1":null,"date2":"2011-06-26T05:00:00Z"}')
def date1 = obj.date1
if (date1)
     parse(date1)   // parse error occurs here because date1 evaluates true in the if because it is JSONObject.NULL

有没有一种简单的方法可以让解析器解析一个真正的空值,这样我就不需要检查对象是否是JSONObject.NULL了。

我尝试建议here使用.toString(),但它最终返回字符串值' null‘,而不是JSONObject.NULL值的实际null。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-24 05:32:44

看看:http://grails.1312388.n4.nabble.com/The-groovy-truth-of-JSONObject-Null-td3661040.html

Ian Roberts提到了一个使null检查成为可能的好技巧:

代码语言:javascript
复制
JSONObject.NULL.metaClass.asBoolean = {-> false} 
票数 13
EN

Stack Overflow用户

发布于 2012-06-19 19:56:23

你可能会发现这更有用,更自然

代码语言:javascript
复制
    JSONObject.NULL.equals(jsonObj.get("key_name"))
票数 19
EN

Stack Overflow用户

发布于 2015-07-24 12:57:33

我想我找到了一个更好的解决方案,那就是通过将JSONObject.java文件复制到Grails src/java项目中来覆盖JSONObject.NULL内部类的toString()方法实现,然后将实现更改为:

代码语言:javascript
复制
    /**
     * Get the "" string value.
     * @return An empty String "".
     */
    @Override
    public String toString() {
        return "";
    }

在类路径中使用这个新类重新启动后,类加载器将使用您的JSONObject类,而不是打包在Grails依赖项中的类。

请确保将其放在与原始文件相同的包中。

有关更多详细信息,请访问此处:https://github.com/grails/grails-core/issues/9129

希望它能有所帮助:-)

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7860781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档