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

Dart中GroupBy实例转换问题求助:长期尝试未解决

问题解决

1. 解决Instance of 'GroupBy'的打印问题

你看到的输出是因为Dart自定义类默认的toString()方法只会返回类实例标识,不会输出具体属性。需要给GroupBy类重写toString方法,同时确保fromJson解析逻辑正确:

class GroupBy {
  final String date;
  final String eventDescp;
  final String eventTitle;

  GroupBy({
    required this.date,
    required this.eventDescp,
    required this.eventTitle,
  });

  factory GroupBy.fromJson(Map<String, dynamic> json) {
    return GroupBy(
      date: json['date'],
      eventDescp: json['eventDescp'],
      eventTitle: json['eventTitle'],
    );
  }

  // 重写toString,打印时显示对象具体属性
  @override
  String toString() {
    return 'GroupBy(date: $date, eventDescp: $eventDescp, eventTitle: $eventTitle)';
  }
}

添加后再运行代码,打印mySelectedEvents就会显示每个对象的实际数据,而不是实例标识。

2. 按日期分组事件(若这是你的真实需求)

从变量名和数据结构来看,你大概率想要按日期对事件进行分组,而非单纯转换对象。可以用Map<String, List<GroupBy>>实现分组逻辑:

修改main函数:

Future<void> main() async {
  final res = await dbRequest();
  print(res);
  
  // 转换所有数据为GroupBy对象
  final allEvents = res.map((e) => GroupBy.fromJson(e)).toList();
  
  // 按日期分组
  final groupedEvents = <String, List<GroupBy>>{};
  for (var event in allEvents) {
    groupedEvents.putIfAbsent(event.date, () => []).add(event);
  }
  
  // 打印分组结果
  print(groupedEvents);
}

输出会变成按日期聚合的结构,类似:

{2022-09-17: [GroupBy(date: 2022-09-17, eventDescp: azerty, eventTitle: azertyui), GroupBy(date: 2022-09-17, eventDescp: 11, eventTitle: AZE), ...], 2022-09-20: [GroupBy(date: 2022-09-20, eventDescp: 77, eventTitle: HHJ)]}

内容的提问来源于stack exchange,提问作者Zana Souleymane Coulibaly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 04:10:28