用Jackson解码包含unicode字符的JSON

时间:2014-05-26 17:14:02

标签: java json unicode jackson

我使用Jackson来解析来自Web服务的JSON响应(使用Spring RestTemplate发出的请求)。 问题是JSON包含unicode字符,如\ u00a0或\ u2212或\ ufeff,这些字符被“解码”为问号或

第一个问题,Web服务在JSON响应中返回此类unicode字符是好还是坏? 响应头Content-Type是否也包含“charset = utf-8”或“application / json”就足够了?

第二个问题,如何让杰克逊能够解码这些角色? 这是一个测试:

String json = "{\"message\":\"Text containing unicode like \\u00a0 or \\u2212 or \\ufeff\"}";
try {
    ObjectMapper mapper = new ObjectMapper();
    JsonFactory factory = mapper.getFactory();
    JsonParser parser = factory.createParser(json);
    JsonNode jnode = mapper.readTree(parser);
    String message = jnode.get("message").toString();
    logger.info(message);
    System.out.println(message);
} catch (JsonParseException e) {
    e.printStackTrace();
} catch (JsonProcessingException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

我在控制台和日志中看到的内容:

“包含unicode的文本或?或?”

谢谢!

0 个答案:

没有答案