如何在Groovy中无Unicode转义地格式化JSON到文件?
Groovy原生实现JSON格式化输出且不转义Unicode字符
可行方案
通过自定义JsonGenerator配置禁用Unicode转义,再结合JsonOutput.prettyPrint实现格式化,无需额外依赖:
// 配置JSON生成器,禁用Unicode转义 def jsonGenerator = new JsonGenerator.Options() .disableUnicodeEscaping() .build() // 生成无转义的紧凑JSON字符串 def compactJson = jsonGenerator.toJson([name: 'Johan Söder', age: 42]) // 格式化JSON为带缩进的美观格式 def prettyJson = JsonOutput.prettyPrint(compactJson) // 写入文件,指定UTF-8编码确保字符正确存储 new File("data.json").write(prettyJson, "UTF-8")
输出结果
生成的data.json内容如下,Unicode字符无转义且格式规范:
{ "name": "Johan Söder", "age": 42 }
为什么之前的尝试失败
JsonOutput.toJson默认行为:该方法会自动转义Unicode字符,后续的prettyPrint仅处理格式,不会还原已转义的字符。- 单独使用
JsonGenerator:仅能生成紧凑格式的JSON,无缩进效果;若之前组合时出现转义或格式混乱,大概率是错误地先通过JsonOutput.toJson生成了带转义的字符串,再进行处理导致的。
内容的提问来源于stack exchange,提问作者Skillzore
相关产品推荐
相关产品推荐

