Java Spring boot应用程序无法映射PUT API调用中的列表对象
我在PUT/PATCH API调用中使用了一个对象列表,它对对象列表进行更新。令我惊讶的是,请求映射失败了 POJO:Java Spring boot应用程序无法映射PUT API调用中的列表对象,java,spring,spring-boot,spring-mvc,Java,Spring,Spring Boot,Spring Mvc,我在PUT/PATCH API调用中使用了一个对象列表,它对对象列表进行更新。令我惊讶的是,请求映射失败了 POJO: public class Product{ } public class Products{ private List<Product> products; public List<Product> getProducts() { return products; } public void
public class Product{
}
public class Products{
private List<Product> products;
public List<Product> getProducts() {
return products;
}
public void setSubscription(List<Product> products) {
this.products= products;
}
}
JSON请求:
{
"name": "MySmartPhone",
"brand":"Samsung"
}
通过邮递员h进行本地测试的URIttp://localhost:8080/app/products您的控制器有
产品
,这是产品
的列表。您需要在JSON中传递相同的模式
假设您的产品有以下字段
public class Product{
public String name;
public String brand;
}
您的请求应该是这样的
{
"products" : [
{
"name": "MySmartPhone",
"brand":"Samsung"
}
]
}
编辑1:
我在《邮递员》中试用了你的代码,我能够看到映射。检查在body中的Postman中是否选择了application/json
@RequestMapping(value = "/products", method = RequestMethod.PUT, produces = "application/json;charset=UTF-8")
public @ResponseStatus(value = HttpStatus.NO_CONTENT) @ResponseBody void updateProducts(
@RequestBody Products products) {
System.out.println(products.getProducts().get(0).getName());
}
OUTPUT:
MySmartPhone
您的JSON请求不正确,请检查下面的代码
public class Product{
public String name;
public String brand;
//Setter and Getter
}
public class Products{
private List<Product> products;
public List<Product> getProducts() {
return products;
}
public void setSubscription(List<Product> products) {
this.products= products;
}
}
您的请求对象是错误的。它应该是一个对象列表。但是,你把它当作一个单独的对象,你的问题到底是什么?所以,如果我试图在上面的例子中像产品一样包装一个列表,如果我通过一个对象,它不会考虑列表中的一个对象吗?你的JOSN请求应该像<代码> {产品〉:[{名字]:“MyStaskPoice”,“品牌”:“三星”}@SudhirOjha我已经更改了我的请求JSON。但是当JSON到产品列表的映射失败时。在下面,我在requestbody中将产品设置为null。即使在更新JSON以包含产品列表后,@requestbody中的绑定产品也设置为null。我能够在Controller类中看到对象
public class Product{
public String name;
public String brand;
//Setter and Getter
}
public class Products{
private List<Product> products;
public List<Product> getProducts() {
return products;
}
public void setSubscription(List<Product> products) {
this.products= products;
}
}
{
"products": [{
"name": "MySmartPhone",
"brand": "Samsung"
}, {
"name": "MySmartPhone1",
"brand": "Nokia"
}]
}