2013-03-20 101 views
0

我知道spring 3.2会将json转换为带有RequestBody注解的对象列表。它不适合我。我可以使用常规的Jackson对象映射器来完成它。只是检查是否有人可以帮助我..下面是我的JSON和控制器方法Spring 3.2 Jackson2(400坏请求)

[{"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); 
} 

回答

1

您正面临Java的类型擦除问题。 Spring不能将确切的类类型传递给方法,所以它实际上得到了类似List<?> policiesToWash的东西。

一种解决方法是创建像

public class WashablePolishes extends ArrayList<ReconPolicy> 

这样弹簧一类将保留通过超类型链的类型。

,或者你可以为你回答Varun的你的方法改为

public @ResponseBody RequestStatus washTransactions(@RequestBody ReconPolicy[] policiesToWash) throws Exception {...} 
+0

thx,你解决了我很多时间。 – hiway 2014-04-16 04:22:32

0

感谢。从Spring 3.2开始,没有类型擦除问题。在启用spring调试后发现问题,我发现它在某些未知属性上失败,我不得不用@JsonIgnoreProperties注释我的类。现在它可以工作。