在Grails中从JSON文件解析日期

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'

1
这似乎是 Grails date unmarshalling 的重复。 - Alonso Dominguez
我已经看过这篇帖子,但那个解决方案对我不起作用。还有其他的想法吗?谢谢! - elcadro
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']

如果您有一个名为 Book.groovy 的域,其中包含一个 Date 属性,那么可以通过以下方式进行访问

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

将完美地工作。已经测试过GRAILS 3.1.6。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接