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

要将API响应字符串解码为JSON,json.decode()效果很好。

这将解析一个类似于

{ "Response" : {"Responsecode" : "1" , "Response" : "Success"}}

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

{\"Response\" : {\"Responsecode\" : \"0\" , \"Response\" : \"Success\"}}

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

完成的。

回答:

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

}

以上是 Flutter-删除飞镖中的转义序列 的全部内容, 来源链接: utcz.com/qa/429905.html

回到顶部