Flutter jsonDecode无法处理JSON中的 字符,该如何解决?
问题解析:Flutter jsonDecode 报错“Control character in string...”的原因
这不是Flutter的jsonDecode的bug,核心原因是不同JSON解析器对规范的严格程度不一样:
JSON规范的硬性要求
根据RFC 8259标准,JSON字符串里不能直接包含未转义的控制字符(比如制表符这类ASCII控制字符),必须转义成\t(也就是字符串中要写成\\t)才属于合法格式。不同解析器的容错差异
- Flutter的
jsonDecode(基于Dart的dart:convert实现)严格遵循JSON规范,遇到未转义的控制字符就会抛出异常。 - React Native使用的是JavaScript的
JSON.parse,JS解析器对非标准JSON有一定容错机制,允许直接包含部分未转义的控制字符,所以不会报错。
- Flutter的
你忽略的关键点
你的JSON数据本身不符合标准JSON规范,React Native能解析只是因为它的解析器更宽松,而非数据本身合法。预处理替换是临时解决方案,更根本的办法是让数据源输出符合标准的JSON,把控制字符转义后再生成JSON字符串。
内容的提问来源于stack exchange,提问作者rjapenga
相关产品推荐
相关产品推荐

