【发布时间】:2015-09-22 01:32:46
【问题描述】:
当我将数组添加到 JSON 对象时,我的 POST 请求出现 400 BAD REQUEST 错误。
MemberDTO.java
public class MemberDTO{
private String memberId;
private String purchaseDate;
private List<ProductDTO> selectedProductModels;
...
}
ProductDTO.java
public enum ProductDTO {
PRODUCT1("Product 1", "12.00", "50%', "500.00"),
PRODUCT2("Product 2", "120.00", "80%', "100.00");
private String productName;
private String discount;
private String retailPrice;
private String price;
....
}
Controller.java
@RequestMapping(value = "member/purchase", method = RequestMethod.POST)
public String purchase(@RequestBody MemberDTO data){
...
}
JSON
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 请求
$.ajax({
type : "POST",
url : contextPath + "/member/purchase.do",
dataType: "json",
contentType:"application/json",
data : JSON.stringify(purchaseData),
success : function(data) {}
});
我尝试从 json 中删除“selectedProductModels”数组列表,并且得到了成功的响应。我错过了什么吗?
【问题讨论】:
-
我敢肯定,如果您查看日志,您会看到无法创建枚举的异常。使用自定义反序列化器或根本不使用枚举。无论如何,这是一个丑陋的枚举。除非公司从不提供任何不同的产品和不同的价格和折扣,否则你最好只使用课程。
-
@peeskillet 我尝试使用其他类而不是使用该枚举,但在使用数组时仍然出现相同的错误。没有例外。 :(
-
你有反序列化、无参数构造函数和适当的设置器的基本必需品吗?
标签: java json spring rest spring-mvc