我正在寻找有关处理以下情况的最佳实践的建议。
给定一个接受 JSON 请求的基于 Java 的 Web API,我们需要将 JSON 对象映射到 Java。这个问题是关于 Java 对象是参数类型的情况。对于我的特殊情况,我使用 Spring 和 MappingJacksonHttpMessageConverter 进行映射。
示例 REST 服务
@RequestMapping(method = RequestMethod.POST)
public void updateContainer(@RequestBody Container<?> container) {
realService.updateContainer(container);
}
示例参数类型
public class Container<T extends ContainerItem> {
private T containerItem;
...
}
当我调用此方法时,我将收到 400 错误(错误请求),因为 Container 的类型在运行时被删除,并且 Jackson 不知道如何映射我的 containerItem(因为它不知道要映射到什么类型)。
我实现了一个非常基本的解决方案,其中我向 JSON 数据添加了一个字段,该字段指定了 containerItem 的 Java 类名,然后添加了一个自定义 HttpMessageConverter,它使用这个类名来构造一个参数 JavaType,Jackson ObjectMapper 然后可以使用它来做映射,但我想知道是否有人有更好的方法来处理这个?