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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:35:23