Flutter解析含换行符JSON数组报FormatException问题求助
解决Flutter中
json.decode解析含未转义换行符JSON的FormatException问题 我之前也踩过这个一模一样的坑!其实核心原因是JSON规范里明确要求:字符串不能直接包含未转义的控制字符(比如实际的换行符),必须把这类字符转义成\n的形式,而dart的json.decode对JSON格式的校验特别严格,碰到不符合规范的未转义换行就会直接抛出FormatException。
给你几个实用的解决方案:
预处理JSON字符串,修复格式问题
先把原始JSON里所有未被转义的换行符替换成转义后的\\n,用正则表达式可以精准完成这个操作:// originalJson是你要解析的原始JSON字符串 String cleanedJson = originalJson.replaceAll(RegExp(r'(?<!\\)\n'), r'\\n'); // 用处理后的字符串执行解析 List<dynamic> parsedData = json.decode(cleanedJson);这里的正则
(?<!\\)\n是专门匹配「前面没有反斜杠的换行符」,这样就不会误替换已经转义过的\n(比如字符串里原本的\\n会被完整保留)。针对网络请求返回的响应
如果是从接口拿到的response.data,直接转成字符串后处理即可:String responseContent = response.data.toString(); String fixedContent = responseContent.replaceAll(RegExp(r'(?<!\\)\n'), r'\\n'); var result = json.decode(fixedContent);从源头修复(最优方案)
要是这个JSON数据源是你自己能控制的,建议直接在生成JSON的后端/数据源侧处理,把所有换行符提前转义成\n,这样客户端不用额外写修复逻辑,也能避免其他潜在的格式问题。
内容的提问来源于stack exchange,提问作者Enis Erkaya
相关产品推荐
相关产品推荐

