/ / Objeto JAXB gerado para json - json, xml, jaxb, mapeador de objetos, jackson-dataformat-xml

Objeto JAXB gerado para json - json, xml, jaxb, mapeador de objetos, jackson-dataformat-xml

Eu gerou classes JAXB de xsd e tenhoclasse JAXB convertida para json usando o ObjectMapper. Mas no meu JSON eu queria o nome do campo mais alto. O nome exibido na classe ObjectFactory @XmlElementDecl (namespace = "", name = "Foo") nome i-e My Json deve ser algo como isto

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

Abaixo está o código que estou usando para converter o objeto para json

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

Quando eu tenho gerado clasess JAXB de XSD Iapenas crie classes criadas até o Foo_Inside. Eu sou novo neste conceito, alguém pode me ajudar a gerar JSON, que inclui o nome da chave TopMost i-e Foo no meu caso.

Respostas:

0 para resposta № 1

Ok, isso será baseado em uma suposição porque não há nenhum xsd fornecido. Eu acredito que você tem um xsd que é algo como isto:

<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>

O que você precisa fazer é remover os dois especificados acima e substituir por:

<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>

Ele irá gerar sua classe Foo como você queria como um @XmlRootElement