如何在grails中解析JSON时获取真正的空值而不是JSONObject.NULL值

Sco*_*ott 14 null grails groovy json

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

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
Run Code Online (Sandbox Code Playgroud)

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

我在这里尝试使用.toString(),但最终返回字符串值'null'而不是JSONObject.NULL值的实际null.

dee*_*try 16

您可能会发现这更有用和自然

    JSONObject.NULL.equals(jsonObj.get("key_name"))
Run Code Online (Sandbox Code Playgroud)


Chr*_*ris 13

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

Ian Roberts提到了一个很好的技巧,可以进行空检查:

JSONObject.NULL.metaClass.asBoolean = {-> false} 
Run Code Online (Sandbox Code Playgroud)