gpt4 book ai didi

rest - Spring MVC REST 使用 @RequestBody List 返回 HTTP 400 语法错误

转载 作者:行者123 更新时间:2023-12-01 06:00:42 51 4
gpt4 key购买 nike

我正在使用 Spring 4 + Jackson 2 并在自定义类上使用 @RequestBody 编写了一个功能齐全的 POST 方法。此方法在解码对象方面没有问题。

@ResponseBody
@RequestMapping(value="store", method = RequestMethod.POST)
public ServiceResponse store(@RequestBody CustomClass list) {
...
}

// Request: { code: "A", amount: 200 }

当我尝试添加另一种方法来处理同一类的集合时,我的 POST 请求返回以下错误。

HTTP Status 400: The request sent by the client was syntactically incorrect.



我注意到,当提交的 JSON 与实体类不匹配时,通常会发生此错误。然而,我所做的只是提交一个相同对象的数组,而不是对象本身,这已经被证明是有效的。
@ResponseBody
@RequestMapping(value="store-bulk", method = RequestMethod.POST)
public ServiceResponse storeBulk(@RequestBody List<CustomClass> list) {
...
}

// Request: [{ code: "A", amount: 200 }, { code: "B", amount: 400 }]

我在这里错过了什么吗?

最佳答案

在 Java 中,泛型的类型信息在运行时会被删除,因此 Spring 会看到您的 List<CustomClass> objectList<Object> object ,因此它无法理解如何解析它。

解决它的方法之一,您可以通过为列表创建包装类来捕获类型信息,如下所示:

public class CustomClassList extends ArrayList<CustomClass> {
}

关于rest - Spring MVC REST 使用 @RequestBody List<?> 返回 HTTP 400 语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30558491/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com