3

我正在处理一个 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'
4

1 回答 1

3

这是最近讨论的一个话题。最近的 GRAILS 版本,比如 3.x,具有强大的简单支持。参见例如这个答案
简而言之,您必须在 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 进行测试。

于 2016-11-04T13:13:19.270 回答