Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Grails中为JSON转换器设置日期格式_Json_Date_Grails_Converter - Fatal编程技术网

如何在Grails中为JSON转换器设置日期格式

如何在Grails中为JSON转换器设置日期格式,json,date,grails,converter,Json,Date,Grails,Converter,我的Grails控制器中有一个方法,它应该返回JSON,JSON的属性是日期对象,但当我这样做时: render myObject as JSON 输出如下所示: { "dateProperty": "2010-12-31T23:00:00Z", "otherProperty" : "aValue..." } 是否有方法更改转换器中使用的默认日期格式 我尝试在Config.groovy中设置属性grails.converters.json.date和grails.date.f

我的Grails控制器中有一个方法,它应该返回JSON,JSON的属性是日期对象,但当我这样做时:

render myObject as JSON
输出如下所示:

{
    "dateProperty": "2010-12-31T23:00:00Z",
    "otherProperty" : "aValue..."
}
是否有方法更改转换器中使用的默认日期格式

我尝试在Config.groovy中设置属性
grails.converters.json.date
grails.date.formats
,但这不起作用。
我做错了什么,还是有别的办法


谢谢

我通常使用定制封送员。假设您拥有以下域

class Address { 
  String addressOne
  String city
  //bla bla
  Date dateCreated
}
像这样在src/groovy下创建一个类

class AddressMarshaller {
  void register() {
     JSON.registerObjectMarshaller(Address) { Address address ->
      return [ 
         id: address.id,
         addressOne: address.addressOne,
         city: address.city,
         dateCreated: address.dateCreated.format('yyyy-MM-dd')
      ]
  }
}
然后在引导文件中执行以下操作:

[ new AddressMarshaller() ].each { it.register() }
我之所以这样做是因为我有多个封送器


现在,无论何时,只要您将地址设置为JSON,您就会得到您描述的JSON,并且您的日期格式是正确的。我知道这对于在JSON中格式化日期来说似乎有些过分,但它还有很多其他好处。

如果您想要所有日期类型的默认JSON封送器,您也可以使用非常简单的东西,如中所示@Gregg的答案对于单个域类来说要灵活得多。

我可以为我的对象创建封送拆收器……在这种情况下,这并不是一种过分的做法,因为这样我可以隐藏它在创建的JSON中自动注入的类属性。感谢您仅为Address的一个属性创建封送拆收器?剩下的就让它去违约?