即使使用必需的属性,也不会检测到重复的XML标签

时间:2019-06-21 11:55:16

标签: java xml rest spring-boot jackson

我有一个Springboot Web服务应用程序,并且我正在使用Jackson标记用于XML和JSON。对于JSON,我能够识别重复项,但不能识别XML。 要使用以下配置检测JSON中的重复项

spring:
   jackson:
      deserialization:
         fail-on-unknown-properties: true
      parser:
         STRICT_DUPLICATE_DETECTION: true

DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY或JsonParser.Feature.STRICT_DUPLICATE_DETECTION它们都不适用于XML输入

配置为检测重复项如下

@Configuration
public class AppConfig {

    @Bean(name = "xmlmapper")
    public ObjectMapper xmlObjectMapper() {
        ObjectMapper mapper = new XmlMapper();
        mapper.setSerializationInclusion(Include.NON_NULL);
        mapper.enable(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY);
        mapper.enable(JsonParser.Feature.STRICT_DUPLICATE_DETECTION);
        return mapper;
    }
}

现在,当我们为XML提供重复元素时,默认情况下不会引发错误,而是选择第二个标记值

<Test>
   <A>v1</A>
   <A>v2</A>
</Test>

下面是相应的课程

@JacksonXmlRootElement(localName="Test")
public class Test {
      @JsonProperty("A")
      @JacksonXmlProperty(localName="A")
      protected String a;
}

预期的结果是,当以XML传递重复的标签时,它应该引发错误,但不会。我不想使用不区分大小写,因为这会引起另一个问题。

0 个答案:

没有答案