在 Grails 3 JSON / rest-api 中格式化 java.time (jsr310) 对象
Formatting java.time (jsr310) objects in Grails 3 JSON / rest-api
尝试在 Grails 3.1.x 中使用 java.time API rest 控制器。
我的域对象 "Absence" 有一个字段
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)
}
这适用于持久化域对象,因此它的 backend/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 的文档,但这不是我想要的。
"problem" 与 GET 请求的关系不大,但是对于 POST 和 PUT 请求来说它不实用,所以我需要让短格式 yyyy-MM-dd 工作.
有人找到解决办法了吗?
从 Grails Slack 问题频道得到了答案。目前不容易做到。你需要自定义数据绑定和json渲染来完成这个,最终我放弃了
尝试在 Grails 3.1.x 中使用 java.time API rest 控制器。
我的域对象 "Absence" 有一个字段
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)
}
这适用于持久化域对象,因此它的 backend/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 的文档,但这不是我想要的。
"problem" 与 GET 请求的关系不大,但是对于 POST 和 PUT 请求来说它不实用,所以我需要让短格式 yyyy-MM-dd 工作.
有人找到解决办法了吗?
从 Grails Slack 问题频道得到了答案。目前不容易做到。你需要自定义数据绑定和json渲染来完成这个,最终我放弃了