防止Gson转义Unicode符号

时间:2017-05-22 10:12:19

标签: java unicode gson

我有Map<String, String>后来我想使用Gson序列化为JSON。此映射的某些键包含Unicode字符,如\uf177等。当我尝试将此类映射序列化为JSON时出现问题,假设我有Map<String, String>包含:

"TEST_KEY" -> "\uf177"

然后,当使用Gson序列化时,我有:

{
    "TEST_KEY": "\\uf177"
}

这不是我想要的,我希望这些Unicode符号与序列化时一样。有没有办法实现这个目标?非常感谢任何帮助,

更新

产生问题的代码:

       projectI18nFileContent = commentsRemover.transform(projectI18nFileContent);

        //find json map which represents translations
        Matcher fullTranslationsMapMatcher = translationsMapSerializedToJsonPattern.matcher(projectI18nFileContent);

        if (!fullTranslationsMapMatcher.find()) {
            throw new IllegalArgumentException(format("%s \n does not contain valid translations json map", projectI18nFileContent));
        }

        String translationsMapSerializedToJson = fullTranslationsMapMatcher.group();
        String newTranslationsMapSerializedToJson = gson.toJson(newTranslations);

        //replace old json translations map with a new
        return projectI18nFileContent.replace(translationsMapSerializedToJson, newTranslationsMapSerializedToJson);

这段代码专门用于更改javascript项目的i18n文件的内容,这就是为什么unicode不应该被转义的原因(否则它只是解决不正确)

谢谢, 干杯

1 个答案:

答案 0 :(得分:3)

根据Json spec,反斜杠必须被转义。

所以你不应该试图阻止这一点。这是正确的行为。