flutter data_error ai_generated true

FormatException: 意外字符(位于字符 2)

FormatException: Unexpected character (at character 2)

ID: flutter/dart-format-exception-json-decode

其他格式: JSON · Markdown 中文 · English
90%修复率
85%置信度
1证据数
2023-11-20首次发现

版本兼容性

版本状态引入弃用备注
Flutter 3.22.0 active
Dart 3.4.0 active
http 1.2.1 active
dio 5.4.0 active

根因分析

从网络请求或本地文件接收到的 JSON 字符串无效,可能被截断或格式错误。

English

Invalid JSON string received from a network request or local file, possibly truncated or malformed.

generic

官方文档

https://api.dart.dev/stable/3.4.0/dart-convert/FormatException-class.html

解决方案

  1. Log the raw response body before decoding to inspect the actual content: `print(response.body);` and check for truncation or extra characters.
  2. Use a JSON preprocessor to remove BOM or control characters: `String cleaned = response.body.replaceAll(RegExp(r'[\x00-\x1F\x7F]'), '');` then decode.
  3. Add a retry mechanism with exponential backoff for network requests to handle transient truncation.

无效尝试

常见但无效的做法:

  1. 90% 失败

    Ignoring the error leaves the app in an inconsistent state with null data, causing downstream crashes.

  2. 95% 失败

    The format exception is raised by Dart's standard decoder; other libraries use the same parser.

  3. 85% 失败

    The error is about JSON syntax, not character encoding; changing encoding may worsen the issue.