【问题标题】:Write ObjectNode to JSON String with UTF-8 Characters to Escaped ASCII使用 UTF-8 字符将 ObjectNode 写入 JSON 字符串以转义 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"}

我怎样才能做到这一点?

【问题讨论】:

标签: java json unicode utf-8 jackson


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 2015-08-06
    • 2011-09-06
    • 2015-04-29
    • 1970-01-01
    • 2012-06-25
    • 2021-12-31
    相关资源
    最近更新 更多