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

Dart新手开发工单工具时无法将API返回JSON转换为对象求助

提问:Dart API返回数据转Map生成工单实例问题

项目与个人背景

  • 项目说明:基于服务商API开发的便捷工单工具,用于分类管理工作中分配给我的工单。
  • 个人背景:累计学习Dart仅19小时,即将完成首次编程训练营的学习。

核心问题

已经完成了服务台软件API的provider开发,能正常向API发送请求,但不知道如何将返回的数据转换为可用于生成工单实例的Map结构。

待实现目标

  1. 从API拉取数据
  2. 将返回的字符串转换为可遍历的JSON对象Map
  3. 遍历JSON对象生成工单对象实例
  4. 构建工单对象列表返回给请求方,用于生成Widget列表。

问题排查

尝试了所有能想到的方法将数据强转为Map都失败了,怀疑当前获取到的是Future而非实际数据,可能是对async/await的理解有问题:之前以为代码是链式执行的,不需要额外等待就能直接拿到字符串结果,但实际并非如此。

问题代码

class ticketingsoftwareAPIProvider {
  // 对象属性
  Client _client = Client();
  final String _ApiKey = "YOUSHALLPASS!";
  final String apiRoot = "https://api.ticketingsoftware.com";
  final String agentId = '2675309';
  

    getAgentTickets() async {
        // HTTP请求头
        Map<String, String> headers = {
          'X-ticketingsoftware-Authorization': 'Bearer $_ApiKey',
          'Accept': 'application/vnd.ticketingsoftware.v2.1+json',
          'Content-Type': 'application/json'
        };
    
        await _client
            .get(Uri.parse('$apiRoot/incidents.json?assigned_to=$agentId'))
            .then((data) {
          if (data.statusCode == 200) {
            print(json.decode(data.body));
            // 无法将此处返回内容转为Map来生成对象
          }
        });
      }
    }
} // 类结束

最终解决方案

List ticketJson = json.decode(data.body);
for (var ticket = 0; ticket < ticketJson.length; ticket++) {
  thisAgentsTickets.add(incident.fromJson(ticketJson[ticket]));
  return thisAgentsTickets;
}

问题原因

之前学习的课程内容太过陈旧是导致问题的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:36:00