こんにちは私は、デフォルトのJAXBシリアライザとして正確に動作するようにfastxml.Jacksonシリアライザを設定する必要があります。ジャクソンXMLシリアル化XMLElementRef名前
I持っている二つのクラスでは、次の場合:
@XmlRootElement(name = "elA")
public class A {
@XmlElementRef
public Collection<B> getBs() {
return this.bs;
}
}
@XmlRootElement(name = "elB")
public class B {
}
マイオブジェクトマッパーの設定は次のようになります。
私はジャクソンシリアライザは、次のXMLを生成するためObjectMapperを設定する必要が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);
<elA>
<elB></elB>
<elB></elB>
</elA>
しかし、私はこれを得ます:
<A>
<bs></bs>
<bs></bs>
</A>
期待どおりの結果を得るためにObject Mapperを設定する必要がありますか?ありがとうございました。
これはフレームワークの一部であるため、クラスも注釈も変更できません。
私が影響を与えることができるのは、ObjectMapperとJacksonの設定だけです。
私はクラスAとBと対応する注釈を持つフレームワークを持っています。私はクラスやその注釈を変更することはできません。 JAXBと同じように注釈を認識するObjectMapperまたはjackson Configurationsを設定する必要があります。 – Michael