私は自分で答えを見つけることができませんでした。 ObjectMapperを使用してオブジェクトを直列化および逆シリアル化するときにjacksonにUTF-8エンコーディングを使用するよう指示する方法はありますか?UTF-8エンコーディングのJackson ObjectMapper?
おかげ
私は自分で答えを見つけることができませんでした。 ObjectMapperを使用してオブジェクトを直列化および逆シリアル化するときにjacksonにUTF-8エンコーディングを使用するよう指示する方法はありますか?UTF-8エンコーディングのJackson ObjectMapper?
おかげ
ジャクソンは自動的にソースで使用されるエンコーディングを検出:JSONの仕様に従って、唯一の有効なエンコーディングは、UTF-8、UTF-16およびUTF-32です。他のエンコーディング(Latin-1など)は使用できません。 このため、自動検出はパーサーによって簡単に実行できます。このため、エンコード検出は受け入れられません。 したがって、入力がUTF-8の場合、そのように検出されます。
出力には、UTF-8がデフォルトです。別のエンコーディングを明示的に使用する場合は、JsonGenerator
を明示的に作成し(JsonEncoding
のメソッドを使用)、これをObjectMapper
に渡すことができます。
どちらの場合でも、手動でjava.io.Reader
/java.io.Writer
を手動で構築し、必要なエンコーディングを使用することができます。
JSONをUTF-16ではなくUTF-8でエンコードするのに何時間も費やしたときに、UTF-8をどのようにデフォルトにすることができるかわかりません。 – cbmanica
@cbmanicaあなたが 'java.io.OutputStream'を与えたとき、UTF-8はJacksonの絶対的なデフォルトです。しかし、他のデフォルトもあります:JDKには、あなた自身のWriterインスタンスを構築するか、あるいは他のいくつかのlib/frameworkがそれを行う場合、デフォルトのエンコーディングがあります。これらはジャクソンの外にあります。 – StaxMan
@cbmanica助けてくれたコードを教えてください。私はまったく同じ問題を抱えているようです。 – Tregoreg