在Grails 3 JSON/rest-api中格式化java.time(jsr310)对象



尝试在Grails 3.1.x rest控制器中使用java.time API。

我的域对象"缺勤"有一个字段

LocalDate date

build.gradle包含

compile "org.jadira.usertype:usertype.extended:5.0.0.GA"

作为依赖

和application.groovy包含

grails.gorm.default.mapping = {
'user-type'(type: org.jadira.usertype.dateandtime.threeten.PersistentLocalDate, class: LocalDate)
'user-type'(type: org.jadira.usertype.dateandtime.threeten.PersistentLocalDateTime, class: LocalDateTime)

}

这适用于持久化域对象,因此它的后端/db端似乎可以按预期工作。

但是,当通过RestController序列化域对象时,我无法按照我想要的方式正确格式化(即yyyy-MM-dd)。输出为

"date": {
        "chronology": {
            "calendarType": "iso8601", 
            "class": "java.time.chrono.IsoChronology", 
            "id": "ISO"
        }, 
        "class": "java.time.LocalDate", 
        "dayOfMonth": 19, 
        "dayOfWeek": {
            "enumType": "java.time.DayOfWeek", 
            "name": "THURSDAY"
        }, 
        "dayOfYear": 140, 
        "era": {
            "enumType": "java.time.chrono.IsoEra", 
            "name": "CE"
        }, 
        "leapYear": true, 
        "month": {
            "enumType": "java.time.Month", 
            "name": "MAY"
        }, 
        "monthValue": 5, 
        "year": 2016
    }, 

但我真正想要的是

"date": "2016-05-19"

然而,我试图在Grails文档中找到解决方案,即使在多次搜索答案后,我似乎也无法找到答案。我已经找到了格式化java.util.Date的文档,但这不是我想要的。

GET请求的"问题"不多,但对于POST和PUT请求,这是不实际的,所以我需要使短格式yyyy-MM-dd工作。

有人找到解决办法了吗?

从Grails Slack问题频道得到了答案。目前这不是一件容易的事。您需要自定义数据绑定和json渲染来实现这一点,最终我放弃了

相关内容

  • 没有找到相关文章

最新更新