如何让杰克逊以纯文本形式交易\ uXXXX?

时间:2014-08-12 10:04:04

标签: json unicode jackson

我使用jackson来解析json数据。现在我遇到处理\ uXXXX问题的问题。

我在这里得到的数据就像

{"UID":"here_\ud83d\udc3b"}

使用ObjectMapper.readValue(jsonContent, UserId.class);将json转换为UserId的实例后,UID属性不是字面意思“here_ \ ud83d \ udc3b”。杰克逊将\ud83d\udc3b转换为2个字符作为unicode值。

我的问题是,是否有可能让杰克逊跳过这个“Unicode转换”并将字面值“\ ud83d \ udc3b”按原样键入?

2 个答案:

答案 0 :(得分:2)

没有。 JSON解析器需要处理Unicode转义以生成基础Unicode字符。

另一方面,写入时,某些字符也可能使用类似的Unicode转义进行编码。

因此,如果您需要使用转义,则需要自行重新编码这些值。

答案 1 :(得分:1)

是的,您可以将\uXXXX替换为\\uXXXX\\\\uXXXX,具体取决于您的技术(即杰克逊)处理转义字符的方式。恕我直言,它应该对你有所帮助。因为Jackson基于Java,所以在Java中\\\\uXXXX是替换\uXXXX所需的值。