web-dev-qa-db-fra.com

Jackson ObjectMapper avec encodage UTF-8?

Existe-t-il un moyen de dire à Jackson d'utiliser le codage UTF-8 lors de l'utilisation de ObjectMapper pour sérialiser et désérialiser des objets?

32
Patricio

Jackson détecte automatiquement l'encodage utilisé dans la source: selon la spécification JSON, seuls les encodages valides sont UTF-8, UTF-16 et UTF-32. Aucun autre encodage (comme Latin-1) ne peut être utilisé. Pour cette raison, la détection automatique est facile et effectuée par l'analyseur - aucune détection d'encodage n'est acceptée pour cette raison. Donc, si l'entrée est UTF-8, elle sera détectée comme telle.

Pour la sortie, UTF-8 est la valeur par défaut; mais si vous souhaitez explicitement utiliser un autre encodage, vous pouvez créer JsonGenerator explicitement (avec une méthode qui prend JsonEncoding), et le transmettre à ObjectMapper.

Alternativement, dans les deux cas, vous pouvez bien sûr construire manuellement Java.io.Reader/Java.io.Writer, et lui faire utiliser l'encodage que vous voulez.

45
StaxMan