J'utilise Jackson 1.9.1 de Scala pour marshall objets à JSON. Mon code de triage ressemble à ceci:Comment renommer la clé racine d'un JSON avec Java Jackson?
val mapper = new ObjectMapper()
mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true)
mapper.setPropertyNamingStrategy(new PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy())
val introspectorPair = new AnnotationIntrospector.Pair(
new JacksonAnnotationIntrospector(),
new JaxbAnnotationIntrospector()
)
mapper.getSerializationConfig().withAnnotationIntrospector(introspectorPair)
val writer = mapper.defaultPrettyPrintingWriter
writer.writeValueAsString(this)
Un JSON typique c'est la production ressemble à ceci:
{
"SalesOrder" : {
"id" : "3187e7d0-f84f-11e0-be50-0800200c9a66",
"total_paid" : 8.99,
"created_at" : "2011-05-14T00:00:00.000+0300",
"updated_at" : "2011-05-14T00:00:00.000+0300"
}
}
Ma question est: comment puis-je renommer la clé racine de « SalesOrder » à un plus JavaScript -friendly "sales_order"? Ajouter un JsonProperty
override au-dessus de ma définition de classe ne fonctionne pas - probablement parce que la clé de la racine n'est pas strictement une propriété (par conséquent aussi setPropertyNamingStrategy()
non appliquée non plus)?
Des conseils sur la façon d'y parvenir avec reconnaissance!
Merci @StaxMan, ça a bien fonctionné. (Je suis allé avec l'option '@ XmlRootElement'). –