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中使用完成的。
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)
| 归档时间: |
|
| 查看次数: |
7635 次 |
| 最近记录: |