我知道spring 3.2确实将一个json转换为一个带有RequestBody注释的对象列表。它不适合我。我可以使用常规的Jackson对象映射器来完成它。只是检查是否有人可以帮助我..下面是我的json和控制器方法
[{"uniqueJqGridId":"1","fileProcessingDate":"2012-09-24","createdTimeStamp":"1348569180191","csoCode":"A-A ","cycleDate":"2012-09-24","accountDate":"2012-10-02","originName":"NCAA ","amount":"-95996.33","policyNumber":"C ","transactionCode":"PCH","id":"1"}]
@RequestMapping(method = RequestMethod.POST, value = "/washTransactions", headers="Content-Type=application/json")
public @ResponseBody RequestStatus washTransactions(@RequestBody List<ReconPolicy> policiesToWash)throws Exception{
reconciliationService.applyWashToTransactions(policiesToWash,getCurrentUser());
return new RequestStatus(true);
}
答案 0 :(得分:1)
您正面临Java的Type Erasure问题。 Spring无法将确切的类类型传递给方法,因此它实际上得到了List<?> policiesToWash
之类的内容。
解决方法是创建类似
的类public class WashablePolishes extends ArrayList<ReconPolicy>
这样,spring将通过超级链保留类型。
或者您可以将方法更改为
public @ResponseBody RequestStatus washTransactions(@RequestBody ReconPolicy[] policiesToWash) throws Exception {...}
答案 1 :(得分:0)
感谢您回复Varun。从Spring 3.2开始,没有类型擦除问题。我在启用spring调试后发现了这个问题,我发现它在某些未知属性上失败了,我不得不用@JsonIgnoreProperties注释我的类。现在它有效。