Non sono riuscito a trovare la risposta da solo. C'è un modo per dire a Jackson di usare la codifica UTF-8 quando si usa ObjectMapper per serializzare e deserializzare oggetti?Jackson ObjectMapper con codifica UTF-8?
Grazie
Non sono riuscito a trovare la risposta da solo. C'è un modo per dire a Jackson di usare la codifica UTF-8 quando si usa ObjectMapper per serializzare e deserializzare oggetti?Jackson ObjectMapper con codifica UTF-8?
Grazie
Jackson rileva automaticamente codifica utilizzata in source: secondo la specifica JSON, codifiche solo validi sono UTF-8, UTF-16 e UTF-32. Non è possibile utilizzare altre codifiche (come Latin-1). A causa di ciò, il rilevamento automatico è facile e fatto dal parser - nessun rilevamento di codifica è accettato per questo motivo. Quindi, se l'input è UTF-8, verrà rilevato come tale.
Per l'output, UTF-8 è l'impostazione predefinita; ma se si desidera utilizzare esplicitamente un'altra codifica, è possibile creare esplicitamente JsonGenerator
(con un metodo che prende JsonEncoding
) e passarlo a ObjectMapper
.
In alternativa, in entrambi i casi, è possibile creare manualmente manualmente java.io.Reader
/java.io.Writer
e utilizzare qualsiasi codifica desiderata.
Non sono sicuro di come UTF-8 può essere l'impostazione predefinita, quando ho trascorso ore a cercare di ottenere la codifica JSON in UTF-8 anziché UTF-16. – cbmanica
@cbmanica Fidati di me, UTF-8 è l'impostazione predefinita assoluta di Jackson quando si consegna 'java.io.OutputStream'. Ma ci sono altri valori di default: JDK ha la sua codifica predefinita se si sceglie di costruire l'istanza di 'Writer' da soli, o qualche altro lib/framework lo fa. Questi sono fuori da Jackson. – StaxMan
@cbmanica Potresti, per favore, condividere il tuo codice che ti ha aiutato? Sembra che abbia lo stesso problema. – Tregoreg