使用Grails 2.4解析JSON空字符串值

时间:2014-10-16 08:37:02

标签: json grails

使用Grails 2.4创建RESTlike API我必须解析JSON内容,例如对于UPDATE / PATCH动词。

我希望将null和空字符串值解析为null,但我看到的行为是当我发送"{'name':'p1', 'description':''}"时,它被解析为[description:, name:p1],它不是空值,因为它不是能够处理paramsMap.getAt("description") != null条件

你见过这种行为吗? ...是否可以使默认的编组器将值转换为空?

1 个答案:

答案 0 :(得分:1)

正如文档解释:

  

对于没有值的输入字段,表单提交产生的​​Web请求将包含空字符串,而不是空字符串。将mass属性绑定到不可为空的属性时,请记住这一点。默认行为是空字符串不会为nullable验证:false,因为数据绑定器会将空字符串转换为null。这包括空字符串和空字符串。空字符串是任何字符串,以便trim()方法返回空字符串。要关闭空字符串到null的转换,请在Config.groovy中将grails.databinding.convertEmptyStringsToNull属性设置为false。有关数据绑定的更多详细信息,请参阅数据绑定部分。

因此marshaller的默认行为是将其转换为null。

检查您是否有配置:

// the default value for this property is true
grails.databinding.convertEmptyStringsToNull = false

如果是,那就是问题。

我尝试使用空参数发布一些数据,结果为null。

然而,如果你这样做,那么groovy有很多副作用,实际上就是你写的:

print params.description != null ? 'Not null' : 'Null'

你得到'非空'

但如果你写:

params.description ? 'Not null' : 'Null'

你得到'Null'

这是我在groovy shell中制作的截图

First usage

Second usage

所以最后不要使用!= null:D