使用 UTF-8 字符将 ObjectNode 写入 JSON 字符串以转义 ASCII
Posted
技术标签:
【中文标题】使用 UTF-8 字符将 ObjectNode 写入 JSON 字符串以转义 ASCII【英文标题】:Write ObjectNode to JSON String with UTF-8 Characters to Escaped ASCII 【发布时间】:2014-06-01 01:16:49 【问题描述】:我想将 Jackson 的 ObjectNode
的内容写入一个字符串,其中 UTF-8 字符写为 ASCII(Unicode 转义)。
这是一个示例方法:
private String writeUnicodeString()
ObjectMapper mapper = new ObjectMapper();
ObjectNode node = mapper.getNodeFactory().objectNode();
node.put("field1", "Maël Hörz");
return node.toString();
默认情况下,输出:
"field1":"Maël Hörz"
我希望它输出的是:
"field1":"Ma\u00EBl H\u00F6rz"
我怎样才能做到这一点?
【问题讨论】:
通过***.com/a/4901205/3080094 之类的东西? 【参考方案1】:您应该启用控制非 ASCII 字符转义的 JsonGenerator 功能。这是一个例子:
ObjectMapper mapper = new ObjectMapper();
mapper.getFactory().configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true);
ObjectNode node = mapper.getNodeFactory().objectNode();
node.put("field1", "Maël Hörz");
System.out.println(mapper.writeValueAsString(node));
输出是:
"field1":"Ma\u00EBl H\u00F6rz"
【讨论】:
在java play 2.3上,导入的是:com.fasterxml.jackson.databind.node.ObjectNode com.fasterxml.jackson.databind.ObjectMapper【参考方案2】:JsonGenerator 已被弃用,使用 JsonWriteFeature 代替它
mapper.getFactory().configure(JsonWriteFeature.ESCAPE_NON_ASCII.mappedFeature(), true);
【讨论】:
以上是关于使用 UTF-8 字符将 ObjectNode 写入 JSON 字符串以转义 ASCII的主要内容,如果未能解决你的问题,请参考以下文章
Jackson Json:如何将数组转换为 JsonNode 和 ObjectNode?
如何在 Jackson 中将对象序列化为 ObjectNode 的值?
enterprisearchitect的objectnode怎么创建
Springfox/Swagger 中用于返回 ObjectNode 的自定义 ResponseModel
Jackson 中的 ObjectNode 和 JsonNode 有啥区别?
泽西岛:找不到媒体类型 = 应用程序/json、类型 = 类 org.codehaus.jackson.node.ObjectNode 的 MessageBodyWriter?