由于日期值,Grails LazyMap 到 POJO 的转换失败

Grails LazyMap to POJO Conversion failed due to Date value

我正在使用 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 而不会出现字符串到日期对话错误。

应该有任何东西可以在投射前进行预处理。

请帮忙。

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

我还建议不要将月份发送为 Jun,因为这是特定于语言环境的,可能无法正常工作,具体取决于您的环境。

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

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

我的代码如下

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