Mi piacerebbe leggere un "albero" JSON da una matrice di byte java e scrivere un "albero" JSON come array di java byte usando Jackson. Un modo per farlo è la seguente:Modo consigliato corrente per convertire il byte [] in JsonNode e ritorno
ObjectMapper om = new ObjectMapper();
JsonNode old = om.createObjectNode();
byte[] arr = om.writeValueAsBytes(old);
JsonNode new = om.readTree(arr);
Tuttavia, Jackson in questi giorni raccomanda l'uso di ObjectReader e ObjectWriter invece di ObjectMapper, a causa della sicurezza dei thread in configurazione, ma anche a causa di ottimizzazioni che potrebbero essere rilevanti per loro solo. Ma ObjectReader non supporta direttamente readTree con gli array di byte e writeValueAsBytes è più generico di writeTree, quindi potrebbe esserci un modo (e un motivo) per ignorare la logica di mappatura dei tipi in qualche modo.
Quindi, oggi, con il più recente Jackson (2.5), qual è il modo più veloce/migliore/consigliato per eseguire queste due conversioni?
Puoi testimoniare che l'utilizzo di ByteArrayInputStream è efficiente come readTree con byte []? Per loro, JsonFactory.createParser (byte []) deve essere efficiente quanto JsonFactory.createParser (InputStream) e dubito che lo sia - ma potrei sbagliarmi. – Nakedible
@Nakedible, posso facilmente dire che non testimonierò mai in una questione del genere;) Tuttavia, ho fatto alcuni semplici [benchmark delle prestazioni] (http://hastebin.com/eberuputon.avrasm) dove ho confrontato i diversi metodi e il l'output può essere [trovato qui] (http://hastebin.com/iyiseripol.profile). – wassgren
Ok, mi hai convinto, anche se i microbenchmark mentono sempre;) Grazie, ottima risposta! – Nakedible