Jackson ObjectMapper采用UTF-8编码?

Pat*_*cio 33 json jackson

有没有办法告诉杰克逊在使用ObjectMapper序列化和反序列化对象时使用UTF-8编码?

Sta*_*Man 49

Jackson自动检测源中使用的编码:根据JSON规范,只有有效编码为UTF-8,UTF-16和UTF-32.不能使用其他编码(如Latin-1).因此,自动检测很容易并且由解析器完成 - 因此没有接受编码检测.因此,如果输入是UTF-8,它将被检测到.

对于输出,UTF-8是默认值; 但是如果您明确要使用其他编码,则可以JsonGenerator显式创建(使用带有的方法JsonEncoding),并将其传递给ObjectMapper.

或者,在这两种情况下,您当然可以手动构造java.io.Reader/ java.io.Writer,并使其使用您想要的任何编码.

  • 我不确定 UTF-8 如何成为默认值,当我花了几个小时试图让 JSON 以 UTF-8 而不是 UTF-16 进行编码时。 (3认同)
  • @cbmanica相信我,当你给`java.io.OutputStream`时,UTF-8是Jackson的绝对默认值.但是还有其他默认值:如果您选择自己构建`Writer`实例,或者其他一些lib /框架实现它,则JDK有其默认编码.这些都在杰克逊之外. (3认同)