Имя XMLElementRef сериализации XML Джексона

Здравствуйте, мне нужно настроить сериализатор fastxml.Jackson, чтобы он работал точно так же, как сериализатор JAXB по умолчанию.

У меня есть следующий случай с двумя классами:

@XmlRootElement(name = "elA")
public class A {
    @XmlElementRef
    public Collection<B> getBs() {
        return this.bs;
    }
}

@XmlRootElement(name = "elB")
public class B {

}

Моя конфигурация Object Mapper выглядит так:

XmlMapper objectMapper = new XmlMapper();
JaxbAnnotationModule jaxbAnnotationModule = new JaxbAnnotationModule();
objectMapper.registerModule(jaxbAnnotationModule);

objectMapper.setDefaultUseWrapper(false);
objectMapper.configure(SerializationFeature.INDENT_OUTPUT,true);
objectMapper.configure(SerializationFeature.WRAP_ROOT_VALUE,false);
objectMapper.configure(SerializationFeature.CLOSE_CLOSEABLE, true);
objectMapper.setSerializationInclusion(Include.NON_ABSENT);

JaxbAnnotationIntrospector jaxbAnnotationIntrospector = new XmlJaxbAnnotationIntrospector(objectMapper.getTypeFactory());
objectMapper.setAnnotationIntrospector(jaxbAnnotationIntrospector);

Мне нужно настроить ObjectMapper для сериализатора Jackson для создания следующего XML

<elA>
   <elB></elB>
   <elB></elB>
</elA>

Но я получаю это:

<A>
    <bs></bs>
    <bs></bs>
</A>

Как мне настроить Object Mapper, чтобы получить ожидаемый результат? Спасибо.

Я не могу изменить ни классы, ни аннотации, так как это часть фреймворка.

Единственное, на что я могу повлиять, это конфигурации ObjectMapper и Jackson.


person Michael    schedule 24.10.2016    source источник
comment
У меня есть фреймворк с классами A и B и соответствующими аннотациями. Я не могу ни изменить классы, ни их аннотации. Мне нужно настроить ObjectMapper или конфигурации jackson, чтобы он распознавал аннотации так же, как JAXB.   -  person Michael    schedule 24.10.2016


Ответы (1)


person    schedule
comment
Я не могу изменить структуру классов A и B, так как они являются частью устаревшего кода. - person Michael; 24.10.2016
comment
изменить с @XmlRootElement (имя = elB) на @XmlElement (имя = elB) - person Mahi; 24.10.2016
comment
Спасибо, но я не могу изменить какие-либо аннотации или классы, потому что они принадлежат устаревшему коду. - person Michael; 24.10.2016
comment
Единственное, что я могу изменить, это конфигурации ObjectMapper или Jackson. - person Michael; 24.10.2016
comment
если вы не хотите что-то менять, как вы можете ожидать, что результат изменится. - person Mahi; 24.10.2016
comment
bdw как есть 2 корневых элемента в одном xml - person Mahi; 24.10.2016
comment
У меня есть фреймворк с классами A и B и соответствующими аннотациями. Я не могу ни изменить классы, ни их аннотации. Мне нужно настроить ObjectMapper или конфигурации jackson, чтобы он распознавал аннотации так же, как JAXB. - person Michael; 24.10.2016