Flutter - 删除飞镖中的转义序列

Abh*_*wal 6 dart flutter unescapestring

将 API 响应字符串解码为 JSON,json.decode()工作正常。
这将解析类似于的 JSON 字符串

{ "Response" : {"Responsecode" : "1" , "Response" : "Success"}}
Run Code Online (Sandbox Code Playgroud)

但就我而言,响应以序列化形式出现,例如:

{\"Response\" : {\"Responsecode\" : \"0\" , \"Response\" : \"Success\"}}
Run Code Online (Sandbox Code Playgroud)

json.decode() 不会工作。

在Java中,我用于StringEscapeUtils.unescapeJson()同样的问题。
我搜索了 Dart,但找不到如何对字符串中的字符进行转义。

编辑:
假设,关键数据的值为abc"de
So,其对应的 JSON 将是{"data":"abc\"de"}
,因此在序列化期间,此 json 字符串被转义以{\"data\":\"abc\\\"de\"}作为响应,由 API 发送。
所以,我的目的是删除转义序列,以便我可以获得字符串{"data":"abc\"de"},稍后将使用json.decode(). 删除转义序列是StringEscapeUtils.unescapeJson()在java中使用完成的。

Dan*_*eny 6

json.decode也可以解码单个字符串,所以你应该能够调用它两次。第一次它会返回一个字符串(其中转义字符已被解码),第二次它会将该字符串解码到地图中:

import 'dart:convert';

void main() {
  var a = r'''"{\"Response\" : {\"Responsecode\" : \"0\" , \"Response\" : \"Success\"}}"''';
  var b = json.decode(json.decode(a));
  print(b['Response']['Responsecode']); // 0
  print(b['Response']['Response']); // Success
}
Run Code Online (Sandbox Code Playgroud)