【问题标题】:parsing date in grails from a json file从 json 文件中解析 grails 中的日期
【发布时间】: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的副本
  • 我已经看过这篇文章,但该解决方案对我不起作用。还有其他想法吗?谢谢!

标签: json parsing date grails


【解决方案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 测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-26
    • 1970-01-01
    • 2019-10-23
    相关资源
    最近更新 更多