/ / Objeto JAXB generado a json - json, xml, jaxb, objectmapper, jackson-dataformat-xml

Objeto JAXB generado para json - json, xml, jaxb, objectmapper, jackson-dataformat-xml

He generado clases JAXB desde xsd y tengoconvirtió la clase JAXB a json usando ObjectMapper. Pero en mi JSON quería el nombre de campo superior. El nombre que se muestra en la clase de ObjectFactory @XmlElementDecl (namespace = "", name = "Foo") name i-e My Json debería tener este aspecto

{
"Foo":{
"Foo_Inside": {
"FirstName":"abc",
"LastName","xyz"
},
}
}

Abajo está el código que estoy usando para convertir el objeto a json

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JaxbAnnotationModule());
String jsonString = mapper.writeValueAsString(myJaxBObject);

Cuando he generado el ajedrez JAXB desde XSD Iacaba de tener clases creadas hasta Foo_Inside. Soy nuevo en este concepto, ¿alguien puede ayudarme a generar JSON que incluya el nombre de clave TopMost i-e Foo en mi caso?

Respuestas

0 para la respuesta № 1

Ok, esto se basará en un supuesto porque no se proporciona xsd. Creo que tienes un xsd que se parece a esto:

<xsd:element name="Foo" type="Foo_Inside"/>

<!-- and somewhere in the schema also have -->
<xsd:complexType name="Foo_Inside">
<xsd:sequence>
<xsd:element name="blah" type="BlahType"/>
<xsd:element name="blah-blah" type="BlahBlahType" />
</xsd:sequence>
</xsd:complexType>

Lo que debe hacer es eliminar los dos especificados anteriormente y reemplazarlos con:

<xsd:element name="Foo">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="blah" type="BlahType"/>
<xsd:element name="blah-blah" type="BlahBlahType" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>

Generará tu clase de Foo como querías como @XmlRootElement