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

Flutter JSON文件中的值是否需要添加引号?

Flutter中JSON文件的键是否需要添加引号?

首先明确:标准JSON的语法规则要求,所有键必须用双引号包裹,比如{"count": 3}才是合法的JSON格式;而{count: 3}是Dart中Map对象的字符串表现形式,不属于标准JSON,这也是你后续调用jsonDecode解析失败的根本原因。

看你代码里的问题:在CounterStorage的writeJson方法中,你通过counter.toJson().toString()来生成要写入文件的字符串。这里的toString()是Dart Map类的默认方法,它输出的是Dart风格的Map字符串(不带引号的键),而非符合规范的JSON字符串。

修复方案

把toString()替换为dart:convert中的jsonEncode方法,它会将Map序列化为标准JSON格式:

Future<File> writeJson(CounterModel counter) async {
  final file = await _localFile;
  final stringToWrite = JSON.jsonEncode(counter.toJson()); // 使用jsonEncode生成标准JSON
  return file.writeAsString(stringToWrite);
}

总结

  • JSON文件的键必须加双引号,这是JSON语法的强制要求,和Flutter无关
  • 你之前的解析失败,是因为写入的不是标准JSON字符串,改用jsonEncode就能生成合法的{"count": 3}格式,保证后续可以正常解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:35:06