【问题标题】:JsonParser decoding the unicodeJsonParser 解码 unicode
【发布时间】:2020-05-21 15:56:46
【问题描述】:

我正在使用 JsonParser 和 JsonElement 将 JSON 字符串转换为 JsonObject。

但是我的 JSON 字符串包含很少的 Unicode 转义序列,并且在解析为 JsonElement 后,Unicode 转义序列会自动转换为实际元素。

但我不想在解析后将 Unicode 转义序列转换为实际元素。

JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(jsonString);
JsonObject jsonObject = jsonElement.getAsJsonObject();

jsonString 如下:

{
    "config": {
        "title": "Check the String \u0026 verify"
        }
}

解析成JsonElement结果如下:

{"config":{"title":"Check the String & verify"}}

但我不想在解析后将\u0026解码为&

请告诉我如何解决。

注意:我是使用google gson解析创建JsonElement、JsonObject

【问题讨论】:

  • 不推荐实例化 JsonParser,请改用 JsonParser.parseString。

标签: java json unicode java-8 gson


【解决方案1】:

如果您使用转义字符解析 JSON,并且不希望将它们转换为实际符号,只需转义反斜杠即可。

"Check the String \u0026 verify" 将是 "Check the String \\u0026 verify"

【讨论】:

    【解决方案2】:

    我知道这是一个糟糕的解决方案,但您可以在解析之前将 \u0026 替换为 \\u0026

    JsonElement jsonElement = JsonParser.parseString(jsonString.replaceAll("\\\\u([0-9a-fA-F]{4})", "\\\\\\\\u$1"));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-19
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2021-01-26
      • 1970-01-01
      相关资源
      最近更新 更多