Flutter中_Map是什么?jsonEncode转换_Map报错如何解决?
Flutter JSON编码错误解决:Converting object to an encodable object failed: _Map len:1
错误原因
JSON规范强制要求对象的键必须是字符串类型,你代码里的Map使用了整数1作为键,jsonEncode无法直接处理非字符串键的Map,因此触发编码失败错误。
你的问题代码:
final Map a = {1: "hello"}; final b = jsonEncode(a); // 此处报错 print(b);
解决方案
方案1:直接使用字符串作为Map键
修改Map的键为字符串类型,符合JSON规范:
final Map a = {"1": "hello"}; final b = jsonEncode(a); print(b); // 输出:{"1":"hello"}
方案2:动态转换键为字符串
如果需要保留整数键的业务逻辑,可以通过map方法将所有键转换为字符串后再编码:
final Map<int, String> a = {1: "hello"}; // 转换键为字符串 final encodedMap = a.map((key, value) => MapEntry(key.toString(), value)); final b = jsonEncode(encodedMap); print(b); // 输出:{"1":"hello"}
补充说明
Flutter中dart:convert提供的jsonEncode严格遵循JSON标准,仅支持字符串类型的对象键,任何非字符串键(整数、布尔值等)都会导致编码失败。
内容的提问来源于stack exchange,提问作者Shresth Mittal
相关产品推荐
相关产品推荐

