【发布时间】:2018-12-24 02:55:55
【问题描述】:
我有一个 Spring 4.3.3 @RestController,它通过 Lists 管理实体类型。
@RestController
@RequestMapping("...")
public class EntityRestController {
@PostMapping
public void doSomeWork(@RequestBody final List<Entity> entities) { ... }
}
我发现有时我可能会收到一个请求,其中正文不是由数组组成,而是由单个 JSON 对象组成。 我使用 Gson 作为默认的序列化器/反序列化器,显然它会引发异常。
JSON parse error: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT
解决这个问题的更好方法是(在控制器级别)?
【问题讨论】:
-
你能单独做一些事情吗?为单个实体设置不同的映射并在将一个对象转换为列表后只执行另一个映射?
-
@zack6849 不幸的是,我现在无法控制调用方请求 URL。所以我只能在这个控制器上工作。
-
spring 是否允许您重载 post 映射,以便您可以根据匹配的映射有不同的方法?
-
@zack6849 实际上你不能在不修改 URL 的情况下重载 RequestMapping 方法。它会抛出一个“模糊映射”异常。
标签: java json spring-mvc