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

Flutter/Dart中包含Map的List调用.toJson()方法报错如何解决?

问题原因

Dart 内置的List、Map基础类型本身没有实现toJson()方法,直接调用List.toJson()会触发未定义方法的报错。

解决方案
  • 第一步:在代码文件头部引入Dart内置的转换库:
import 'dart:convert';
  • 第二步:将请求参数里的body: data.toJson()替换为body: jsonEncode(data)即可,jsonEncode方法会自动序列化List、Map类型为符合标准的JSON字符串。

修改后完整代码如下:

import 'dart:convert';
import 'package:http/http.dart' as http;

List<dynamic> data = [
  {'name': 'Name', 'type': 'STRING',},
  {'name': 'Age', 'type': 'INTEGER'},
  {'name': 'Weight', 'type': 'FLOAT'},
  {'name': 'IsMagic', 'type': 'BOOLEAN'},
];

Future creatingTable() async {
    var url = Uri.parse(
        'https://us-central1-denance-cbf3f.cloudfunctions.net/api/create_table');
    var response =
        await http.post(
            url,
            body: jsonEncode(data), // 仅修改此行
            headers: < String, String > {
                'Content-Type': 'application/json; charset=UTF-8',
            },
        );
    print(
        'Response status: ${response.statusCode}');
    print(
        'Response body: ${response.body}');
}
补充说明

只有自定义的实体类才需要手动实现toJson()方法供jsonEncode内部调用序列化,Dart原生的集合类型不需要额外实现序列化逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 22:21:00