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