【问题标题】:Grails LazyMap to POJO Conversion failed due to Date value由于日期值,Grails LazyMap 到 POJO 的转换失败
【发布时间】:2016-09-14 19:35:45
【问题描述】:

我正在使用 Grails 2.4 和 jersey request builder 插件。

我遇到以下错误

def resRequestList = RESPONSE FROM REST REQUEST
ResourceTest item1 = resRequestList.get(0)

错误是

Cannot cast object '{createdBy=2576, endDate=10-Jun-2016, id=14}'
with class 'groovy.json.internal.LazyMap' to class 'com.modal.resource.ResourceTest' 

due to: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '10-Jun-2016' with class 'java.lang.String' to class 'java.util.Date'

从 Sting 到 Date 的转换似乎失败。

我需要解决方案将其自动映射到 POJO,而不会出现字符串到日期对话错误。

应该有任何东西在铸造之前进行预处理。

请帮忙。

【问题讨论】:

标签: json grails grails-2.0


【解决方案1】:

您可以在ResourceTest 类的日期字段中添加@BindingFormat('dd-MMM-yyyy') 注释。您还可以使用grails.databinding.dateFormats 配置选项来设置默认的全局绑定格式。有关详细信息,请参阅此答案:Binding a Grails date from params in a controller

我还建议不要将月份发送为 Jun,因为这是特定于区域设置的,并且可能无法根据您的环境工作。

【讨论】:

  • 嗨,卓戈。感谢您的回复,我的 ResourceTest 类是 POJO 而不是 POGO。如何在 POJO 类中添加 @BindingFormat('dd-MMM-yyyy')。
【解决方案2】:

最后我找到了最适合我的替代解决方案。

我使用反射来获取原始对象列表,使用 GenericType。

我的代码如下

def resRequestList = clientResponse.getEntity(new GenericType<ArrayList<ResourceTest>>(){});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多