Установите ignoreUnknown = true глобально в Джексоне / XmlMapper - PullRequest
0 голосов
/ 13 февраля 2019

Можно ли заставить XmlWrapper игнорировать неизвестные элементы по умолчанию?Я знаю, как установить его для каждого класса, но можете ли вы сделать это глобально по умолчанию для данного XmlMapper?

Я пытался использовать DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, как кто-то предложил, но это не работает (и читалapi doc похоже это не правильное решение).

package zm.study.xmlserialize.jackson;

import java.io.StringReader;

import org.junit.Test;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

public class JacksonIgnoreUnknownTest {

    public static class A {
       public String f1;
    }

    @JsonIgnoreProperties(ignoreUnknown=true)
    public static class B {
        public String f1;
    }

    @Test
    public void ignoreUnknownGlobally() throws Exception
    {
        String xml = "<A><f1>1</f1><f2>2</f2></A>";
        XmlMapper mapper = new XmlMapper();
        mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, true);
        mapper.disable(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES);
        mapper.readValue(new StringReader(xml), A.class);
    }

    @Test
    public void ignoreUnknownPerType() throws Exception
    {
        String xml = "<B><f1>1</f1><f2>2</f2></B>";
        XmlMapper mapper = new XmlMapper();
        mapper.readValue(new StringReader(xml), B.class);
    }

}
...