gson 当把字符串解析为JsonElement时,如何避免自动读取转义符?

xkrw2x1b  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(206)

我有一个简单json字符串,如下所示

{
"foo":"\uv"
}

我想使用gson将这个字符串解析为jsonElement.eg。

String input = "{\"foo\":\"\\uv\"}";
JsonElement element = JsonParser.parseString(input);

但是gson抛出了com.google.gson.json语法异常,java.lang.数字格式异常:\uv
看起来当JsonReader遇到"\“时,它会自动将其视为转义字符。那么,我该怎么做才能使gson将其视为纯文本而不是转义字符呢?

6kkfgxo0

6kkfgxo01#

你想做的事情应该是不可能的。强迫gson接受\作为纯文本将是强迫它不遵循json约定。
另外,您的json也无效,正确的方法是:

{
  "foo":"\\uv"
}

检查gson adding backslash in string,它有很好的解释。以您的代码为例:

public class Temp {

  public static void main(String[] args) {
    String input = "{\"foo\":\"\\\\uv\"}";
    JsonElement element = JsonParser.parseString(input);
    System.out.println("foo value - " + element.getAsJsonObject().getAsJsonPrimitive("foo").getAsString());
  }
}

这将打印-foo value - \uv,这应该正是您的消费者所需要的值。

相关问题