jackson不接受@xlmelement大写键

t9eec4r0  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(335)

我尝试反序列化一些类以在openapi中使用。例如:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MyClass", propOrder = {
    "config",
    "value"
})
public class MyClass
{
  @XmlElement(name = "CONFIG")
  protected MyConfig config;

  @XmlElement(name = "VALUE")
  protected MyValue value;

  public MyConfig getCONFIG()
  {
    return config;
  }

  public MyValue getVALUE()
  {
    return value;
  }
}

我正在使用这些依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.8.4</version>
</dependency>
<dependency>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-jersey2-jaxrs</artifactId>
</dependency>

在我的swagger ui中,我看到它生成了以下json:

{
  "value": {
    [...]
  },
  "config": {
    [...]
  }
}

但是我的rest接口只接受属性为大写的对象。
这是我的对象Map器:

om = new ObjectMapper();
om.registerModule(new JaxbAnnotationModule());

我做错什么了?

dfddblmv

dfddblmv1#

你可以用 MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES .
允许对传入的json进行更宽容的反序列化的特性。如果启用,bean属性将使用它们的小写等价物进行匹配,这意味着任何大小写组合(传入和匹配的名称由小写规范化)都应该工作。
所以:

om.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

相关问题