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 № 1Ok, 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