You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ObjectMapper.writeValueAsString方法序列化字符串的默认编码是什么?

ObjectMapper.writeValueAsString 默认编码说明

首先得理清两个容易混淆的概念:Java String 本身的内部编码,以及序列化生成的JSON内容的字符编码规则。

  • writeValueAsString 返回的是Java String 对象,而Java语言规范里,String 内部统一采用UTF-16编码存储字符,这和Jackson无关,是Java本身的特性。
  • 但从序列化生成的JSON内容的编码逻辑来看,你的推测是对的:Jackson默认会按照UTF-8规则处理JSON字符:
    • ASCII范围内的字符会直接输出;
    • 非ASCII字符默认会转义为\uXXXX的Unicode转义序列(你也可以通过配置JsonGenerator.Feature.ESCAPE_NON_ASCII关闭转义,直接输出对应字符,此时只要把返回的String用UTF-8编码转成字节流,就能得到标准的UTF-8格式JSON)。

简单来说:如果你把writeValueAsString返回的字符串用UTF-8编码转为字节数组,得到的就是符合标准的UTF-8格式JSON;而方法返回的String对象本身的内部编码是UTF-16,这是Java的固有属性,不由Jackson决定。

内容的提问来源于stack exchange,提问作者John Cooper

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 10:52:01