You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:24:57