【发布时间】:2017-04-24 16:47:31
【问题描述】:
当我尝试使用 json view 解析包含 Java 8 LocalDateTime 的简单域模型对象时,我收到堆栈溢出异常,这似乎与 GSON 实现不了解 Java 8 LocalDateTime 的事实有关.
这是一个示例 (documentation of grails views and JSON):
域类“人”
import java.time.LocalDate
class Person
{
Sting name
LocalDate birthDate
}
人员控制器
class PersonController
{
def index() {
respond Person.findAll() as List<Person>
}
}
index.gson 视图
@Field List<Person> personList
json tmpl.person(personList)
_person.gson 模板文件
model
{
Person person
}
json g.parse(person)
当我尝试打开这个视图时,会抛出堆栈溢出异常:
原因:grails.views.ViewRenderException:错误渲染视图: 空值 在 grails.views.AbstractWritableScript.writeTo(AbstractWritableScript.groovy:43) 在 grails.plugin.json.view.api.internal.DefaultGrailsJsonViewHelper$6.writeTo(DefaultGrailsJsonViewHelper.groovy:677)
当我将 _person.gson 简化为:
...
json
{
name person.name
}
视图按预期工作。
我的问题是
是否有默认方式来处理 Grails JSON 视图中的 Java 8 LocalDate/Time 属性? 如果没有,我怎么能register a new GSON builder permanently
- 这个问题相关:How to serialize and deserialize Java 8's java.time types with Gson?
- 我尝试实现这个:https://github.com/gkopff/gson-javatime-serialisers,但这不会将自己注入为新的默认反序列化器,需要手动使用
【问题讨论】:
-
您使用的是什么版本的 JSON 视图?更新的版本添加了 Java 8 日期支持
-
您好@GraemeRocher,感谢您的反馈。我完全不使用 JSON 视图,为我解决了这个问题。可悲的是。但也许这个线程可以用于遇到这个问题的其他人。我在使用这个 maven 包时遇到了上述问题:org.grails.plugins:views-json:1.2.0.M2
-
您可能需要将plugins.grails.org/plugin/grails-java8 添加到您的类路径
-
好点。我不知道这个插件,因为上面的错误发生了,所以它不存在。感谢您的意见。
标签: java json grails groovy gson