Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring boot应用程序无法映射PUT API调用中的列表对象_Java_Spring_Spring Boot_Spring Mvc - Fatal编程技术网

Java Spring boot应用程序无法映射PUT API调用中的列表对象

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

我在PUT/PATCH API调用中使用了一个对象列表,它对对象列表进行更新。令我惊讶的是,请求映射失败了

POJO:

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"
  }]
}