Dart 解码转义 JSON

tim*_*tim 3 json dart

我正在尝试JSONAPI.
API 返回JSON转义引号,因为数据代表用户的报价。

test("escaped quoted json test", () {
  var s = '''{"quote": "\"a quote from a user\""}''';

  var b = json.decode(s);
  expect(b["quote"], "\"a quote from a user\"");
});
Run Code Online (Sandbox Code Playgroud)

但是这会抛出:

FormatException: Unexpected character (at character 13)
{"quote": ""a quote from a user""}

顺便说一句,JSON 是有效的:

{"quote": "\"a quote from a user\""}
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Dart该如何正确处理这个问题?

提前致谢。

Gün*_*uer 5

内部引号需要使用文字反斜杠进行转义,而不是转义的反斜杠

var s = '''{"quote": "\\"a quote from a user\\""}''';
Run Code Online (Sandbox Code Playgroud)

或者

var s = r'''{"quote": "\"a quote from a user\""}''';
Run Code Online (Sandbox Code Playgroud)

用 Dart 源代码编写的 JSON 与通过网络接收的 JSON 之间存在差异。
如果您像在问题中一样将其放入源代码中,则会解释该字符串。您可以调整字符串 (double all \) 或r为原始字符串添加前缀。

  • 谢谢。这解释了很多。下次一定不要判断问题太快。 (2认同)