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

Flutter中JSON解码结果不一致问题求助

Flutter中打印JSON Map导致格式无效的问题解决方法

问题本质

你遇到的核心问题是:直接print(map)输出的不是标准JSON格式,而是Dart中Map对象的字符串化结果,和JSON语法存在差异,因此JSON美化工具会判定格式无效。

原因分析

Dart里调用print(map)时,实际执行的是Map.toString()方法,输出的字符串存在这些不符合JSON规范的地方:

  • 键名没有双引号(JSON要求键必须用双引号包裹)
  • 部分场景下字符串可能用单引号(JSON只允许双引号)
  • 特殊字符的转义逻辑和JSON不完全一致

而你访问map['name']能正常输出,是因为jsonDecode已经把JSON转成了Dart原生的Map对象,取属性是直接操作对象,和JSON格式无关,所以不受影响。

解决方法

要输出标准可解析的JSON,需要把Dart的Map对象重新编码为JSON字符串:

方法1:输出压缩格式的标准JSON

getData().then((value) {
  var map = jsonDecode(value!);
  print(jsonEncode(map)); // 输出符合规范的JSON字符串
});

方法2:输出带缩进的格式化JSON(更易读)

如果需要可读性更强的格式化输出,可以用带缩进的编码器:

import 'dart:convert';

getData().then((value) {
  var map = jsonDecode(value!);
  var formattedJson = JsonEncoder.withIndent('  ').convert(map);
  print(formattedJson);
});

验证

用以上方法输出后,复制结果到JSON美化工具就能正常解析。比如你提供的示例数据,编码后会输出标准JSON格式,完全符合工具的校验要求。

内容的提问来源于stack exchange,提问作者flutter app

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 11:02:16