json - JSON.registerObjectMarshaller在 Bootstrap 中不起作用

标签 json grails groovy bootstrapping

当我想测试自定义的“以JSON形式呈现”方法时,我使用了以下代码

class BootStrap{
def init = { servletContext ->
 ....
 println "change the json before format"
 JSON.registerObjectMarshaller(Date) {
     println "JSON DATE MARSHAL"
     return it.format("yyyy-MM-dd HH:mm:ss")
     }
 println "change the json after format"
 }
}

但是控制台上打印的内容是这样的:

| Compiling 1 source files

| Running Grails application

Active MQ start. ConsumerURL is failover:ssl://xxx.

change the json before format

change the json after format

|Server running. Browse to http://xxx



奇怪的是没有打印“JSON DATE MARSHAL”。
但是,当我将代码放在 Controller 中时,它就起作用了。

我不知道发生了什么

任何建议将不胜感激。

更新:
就像railsdog所说的那样,似乎init中的关闭无效。

我认为JSON中的日期格式是这样的:2016-12-15 16:44:21

但是我得到的是2016-12-15T08:44:21Z。

当我将编码器放入 Controller 时,它可以工作,并且JSON中的日期格式符合预期:

2016-12-15 16:44:21。

我还获得了控制台输出:“JSON DATE MARSHAL”。

最佳答案

我假设注册对象编码器实际上并未执行/调用闭包,因此不会发出调试信息。

关于json - JSON.registerObjectMarshaller在 Bootstrap 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184487/

相关文章:

grails - 在GSP中显示图片

grails - 无法在 grails 2.3.6 中加载数据或为 FixtureLoader 1.2 创建加载程序

groovy - 将元组列表映射到 Groovy 中的第二个元素列表?

javascript - 如何在多级数组中选择对象

javascript - 根据选定的 jsTree 节点过滤 JSON 数据

html - 无法使用表中的列数组迭代 *ngFor 循环

javascript - 为什么 jQuery JSON 解析器需要对反斜杠进行双重转义?

postgresql - 重新启动 postgres 后使用 Grails 自动重新连接到 postgres

java - 无法在数据表中设置 iTotalRecords 和 iTotalDisplayRecords

Groovy-调用带有def参数的方法失败,出现 'Illegal class name"