Java SpringMVC:POST请求Json对象和list返回400个错误请求

Java SpringMVC:POST请求Json对象和list返回400个错误请求,java,json,spring,rest,spring-mvc,Java,Json,Spring,Rest,Spring Mvc,当我向JSON对象添加一个数组时,我的POST请求出现了一个400错误的请求错误 MemberDTO.java public class MemberDTO{ private String memberId; private String purchaseDate; private List<ProductDTO> selectedProductModels; ... } Controller.java @RequestMapping(value = "member/purchas

当我向JSON对象添加一个数组时,我的POST请求出现了一个400错误的请求错误

MemberDTO.java

public class MemberDTO{
private String memberId;
private String purchaseDate;
private List<ProductDTO> selectedProductModels;
...
}
Controller.java

@RequestMapping(value = "member/purchase", method = RequestMethod.POST)
public String purchase(@RequestBody MemberDTO data){
 ...
 }
JSON

Ajax请求

$.ajax({
        type    : "POST",
        url     : contextPath + "/member/purchase.do",
        dataType: "json",
        contentType:"application/json",
        data    : JSON.stringify(purchaseData),
        success : function(data) {}
});

我试图从json中删除“selectedProductModels”数组列表,但得到了成功的响应。我遗漏了什么吗

请尝试参考此处讨论的枚举反序列化选项

您可以指定枚举常量中指定的确切值“Product 1”、“12.00”、“50%”和“500.00”,因为只能解析这些值,否则您必须编写自定义JSON反序列化程序


注:“产品1”、“12.00”、“50%”、“500.00”“您的文本中只有一个引号,这是一个类型错误吗?

我确信,如果您查看日志,您将看到无法创建枚举的异常。使用自定义反序列化程序或根本不使用枚举。不管怎么说,这是一个丑陋的枚举。除非该公司从不提供任何不同的产品、不同的价格和折扣,否则最好只使用一个类。@peeskillet我尝试使用其他类而不是使用该枚举,但在使用数组时仍然会遇到相同的错误。没有例外(您是否有反序列化的基本需求,没有参数构造函数和适当的设置器?
var purchaseData = {
    "memberId" : "12312",
    "purchaseDate" : "2015/02/14",
    "selectedProductModels" : [{
         "productName" : "sample1",
         "discount": "10%",
         "retailPrice": "100.00",
         "price": "400.98"
     },{
         "productName" : "sample2",
         "discount": "20%",
         "retailPrice": "1400.00",
         "price": "4300.98"
     }]
};
$.ajax({
        type    : "POST",
        url     : contextPath + "/member/purchase.do",
        dataType: "json",
        contentType:"application/json",
        data    : JSON.stringify(purchaseData),
        success : function(data) {}
});