No pude encontrar la respuesta yo mismo. ¿Hay alguna manera de decirle a Jackson que use la codificación UTF-8 cuando use ObjectMapper para serializar y deserializar Objetos?Jackson ObjectMapper con codificación UTF-8?
Gracias
No pude encontrar la respuesta yo mismo. ¿Hay alguna manera de decirle a Jackson que use la codificación UTF-8 cuando use ObjectMapper para serializar y deserializar Objetos?Jackson ObjectMapper con codificación UTF-8?
Gracias
Jackson detecta automáticamente codificación utilizada en fuente: según la especificación JSON, codificaciones válidas sólo son UTF-8, UTF-16 y UTF-32. No se pueden usar otras codificaciones (como Latin-1). Debido a esto, la autodetección es fácil y la realiza el analizador sintáctico; por este motivo, no se acepta la detección de codificación. Por lo tanto, si la entrada es UTF-8, se detectará como tal.
Para la salida, UTF-8 es el predeterminado; pero si explícitamente desea usar otra codificación, puede crear JsonGenerator
explícitamente (con un método que toma JsonEncoding
) y pasarlo a ObjectMapper
.
Alternativamente, en ambos casos, puede construir manualmente java.io.Reader
/java.io.Writer
, y hacer que utilice la codificación que desee.
No estoy seguro de cómo UTF-8 puede ser el predeterminado, cuando he pasado horas tratando de obtener JSON codificado en UTF-8 en lugar de UTF-16. – cbmanica
@cbmanica Confía en mí, UTF-8 es el valor predeterminado absoluto para Jackson cuando le das 'java.io.OutputStream'. Pero hay otros valores predeterminados: JDK tiene su codificación predeterminada si elige construir la instancia 'Writer' usted mismo, o alguna otra lib/framework lo hace. Estos están fuera de Jackson. – StaxMan
@cbmanica ¿Podría compartir el código que lo ayudó? Parece que tengo el mismo problema. – Tregoreg