Flutter中如何去除JSON中的转义字符
在Flutter中去除JSON转义字符的解决方法
问题根源
出现转义字符通常是因为重复执行了JSON编码操作——比如先对List调用一次jsonEncode(),之后又不小心对生成的JSON字符串再次编码,导致双引号被转义成\"。另外,打印时显示正常是因为print()方法会自动解析转义字符,实际字符串本身仍带有转义标记。
具体解决方案
避免重复编码
确保只对原始List执行一次JSON编码操作(jsonEncode()和json.encode()是同一方法的不同写法):import 'dart:convert'; void main() { List<Map<String, dynamic>> originalList = [ {"label":"name","field_type":"text","option":[]} ]; // 仅编码一次 String validJson = jsonEncode(originalList); print(validJson); // 输出无转义的正常JSON:[{"label":"name","field_type":"text","option":[]}] }还原已带转义的字符串
如果已经得到了带转义的JSON字符串(比如"{\"label\":\"name\",\"field_type\":\"text\",\"option\":[]}"),可以通过一次解码操作还原成正常JSON:import 'dart:convert'; void main() { String escapedJson = "{\"label\":\"name\",\"field_type\":\"text\",\"option\":[]}"; // 先解码为原始List,再重新编码(或直接转字符串) List<dynamic> restoredList = jsonDecode(escapedJson); String normalJson = jsonEncode(restoredList); print(normalJson); // 输出正常JSON }
内容的提问来源于stack exchange,提问作者Prabhakar
相关产品推荐
相关产品推荐

