从 json 文件中解析 grails 中的日期

Posted

技术标签:

【中文标题】从 json 文件中解析 grails 中的日期【英文标题】:parsing date in grails from a json file 【发布时间】:2012-06-02 21:19:27 【问题描述】:

我正在处理一个 JSON 文件,我需要将它转换为一个对象。到目前为止,一切似乎都很简单,但我在尝试解析日期时发现了一个问题。

我正在尝试做这样的事情:

//My JSON file
data=
    "title":"myTitle"
    "releaseDate":"2012-05-28"


//Myclass
class Book
String title
Date date


Book book = JSON.parse(data)

我收到一个错误:

Cannot cast object  with class 'org.codehaus.groovy.grails.web.json.JSONObject' to class 'Book' due to: 
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '2012-05-28' with class 'java.lang.String' to class 'java.util.Date'

我想我知道为什么会发生这种情况(显然,我不能将字符串转换为日期)但我不知道如何解决它。

我也尝试在Config.groovy 中定义我的格式日期,如下所示:

grails.converters.json.date = 'yyyy-MM-dd'

【问题讨论】:

这似乎是Grails date unmarshalling的副本 我已经看过这篇文章,但该解决方案对我不起作用。还有其他想法吗?谢谢! 【参考方案1】:

这是一个最近讨论的话题。最近的 GRAILS 版本,比如 3.x,具有强大的简单支持。参见例如this answer。 简而言之,您必须在 application.yml 或 application.groovy 中插入一个通用格式列表,以阐明从字符串到日期的转换。例如在 application.groovy 中:

grails.databinding.dateFormats = ["yyyy-MM-dd'T'hh:mm:ss.S'Z'", 'ddMMyyyy', 'yyyy-MM-dd HH:mm:ss']

如果你有一个带有 Date 属性的域 Book.groovy

def book = new Book(JSON.parse(stringJson))

将完美运行。使用 GRAILS 3.1.6 测试。

【讨论】:

以上是关于从 json 文件中解析 grails 中的日期的主要内容,如果未能解决你的问题,请参考以下文章

向 Grails 发送日期时的 GORM 默认日期格式

如何从 Assets 文件夹中解析 StickyHeader RecyclerView 中的 json 数据

如何在 Grails 中将特定日期格式返回为 JSON?

在 grails 服务中使用 g.render

从 Grails 中的控制器渲染 json 视图

在grails中解析JSON时如何获取真正的空值而不是JSONObject.NULL值