由于Date值,Grails LazyMap到POJO转换失败

时间:2016-05-18 10:55:43

标签: json grails grails-2.0

我使用的是Grails 2.4和泽西请求构建器插件。

我在

上遇到错误
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,而不会发生字符串到日期的对话错误。

在施法之前应该有任何预处理。

请帮助。

2 个答案:

答案 0 :(得分:2)

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

我还建议不要将月份作为Jun发送,因为这是特定于语言环境的,并且可能根据您的环境无效。

答案 1 :(得分:2)

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

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

我的代码如下

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