Flutter中Map解析报错:含嵌套receiver字段时jsonEncode失败
问题解决方法
错误原因
JSON规范要求对象的键必须是字符串类型,你在receiver这个Map中使用了整数类型的键(循环变量i是int),jsonEncode无法序列化非字符串键的Map,因此调用API时出现错误。
两种可行解决方案
方案1:将整数键转为字符串
修改循环代码,把i转为字符串作为receiver的键:
for(int i=0; i<=n; i++) { _body['receiver'][i.toString()] = { "receiver_name" : "abc", }; }
这样receiver的键都是字符串,符合JSON格式要求,jsonEncode可以正常编码。
方案2:将receiver改为列表(更符合多数API的数组期望)
如果API期望接收的是数组形式的接收者列表,建议直接把receiver初始化为List而非Map:
// 初始化时修改为列表 _body = { "expected_time": "$Time", "payment": "$payment", "receiver" : [], }; // 循环添加元素 for(int i=0; i<=n; i++) { _body['receiver'].add({ "receiver_name" : "abc", }); }
列表是JSON原生支持的类型,jsonEncode可以直接序列化,同时多数API在处理多个同类型对象时,更倾向于接收数组格式。
内容的提问来源于stack exchange,提问作者Sayak Chatterjee
相关产品推荐
相关产品推荐

