0

我知道 spring 3.2 确实将 json 转换为带有 RequestBody 注释的对象列表。它不适合我。我可以使用常规的杰克逊对象映射器来做到这一点。只是检查是否有人可以帮助我.. 下面是我的 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);
}
4

2 回答 2

1

您正面临 Java 的类型擦除问题。Spring 无法将确切的类类型传递给方法,因此它实际上得到了类似List<?> policiesToWash.

一种解决方法是创建一个类

public class WashablePolishes extends ArrayList<ReconPolicy>

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

或者你可以改变你的方法

public @ResponseBody RequestStatus washTransactions(@RequestBody ReconPolicy[] policiesToWash) throws Exception {...}
于 2013-03-20T20:29:24.750 回答
0

感谢您回复瓦伦。从 Spring 3.2 开始,没有类型擦除问题。我在启用 spring 调试后发现了这个问题,我发现它在一些未知属性上失败了,我不得不用 @JsonIgnoreProperties 注释我的类。现在它起作用了。

于 2013-03-21T12:36:32.423 回答