Sto usando Jackson 2.2.3 e ho bisogno di convertire un albero JsonNode in una stringa con le chiavi di campo ordinate. Non mi è chiaro come farlo, soprattutto perché il contrario è così semplice: JsonNode jn = ObjectMapper.readTree(String s)
.Jackson JsonNode alla stringa con chiavi ordinate
Sembra che il metodo corretto sia void writeTree(JsonGenerator jgen,JsonNode rootNode)
. Tuttavia, non vedo il modo di ottenere il numero di serie String
da JsonGenerator
. Presumo che lo SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS
sarà ancora valido, dal momento che gli JsonGenerator.Feature
s non hanno questa opzione. C'è un modo più semplice per farlo - o in caso contrario, come faccio a recuperare la stringa serializzata dal JsonGenerator
?
C'è un modo per ordinare gli array anche all'interno di JSON? Questa soluzione non funziona se si dispone dell'array json: '{id: 1, collezione: [z, y]}' dopo la seiralizzazione se bacame '{collezione: [z, y], id: 1}' quindi articoli in * raccolta * non ha ordinato affatto! :( – Cherry
@Cherry Ordinate semplicemente la matrice normalmente prima della serializzazione, il motivo per cui Jackson ha bisogno di ordinare le mappe è perché le mappe non hanno ordinamento intrinseco. Gli array fanno, e quindi l'applicazione può ordinare gli array come desiderato prima di serializzare su JSON. non è possibile (in generale) per le mappe. – elhefe