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

Flutter中JSON转Map时访问publishedDate.$date返回null如何解决

问题原因

你的PublishedDate类中JSON序列化/反序列化的键引用逻辑错误:

  • 你在fromJson方法中写的json["${$date}"]是将类本身的$date属性值作为JSON的键读取,而类初始化时$date默认值为null,相当于始终在读取不存在的null键,所以返回值永远是null
  • JSON中实际存储日期的键是固定字符串$date,直接读取该键即可,注意Dart中$是字符串插值符,需要用raw字符串或者转义符避免被解析为插值语法

修复后的完整代码

直接替换你现有的PublishedDate类即可:

class PublishedDate {
  String? $date;

  PublishedDate({this.$date});

  PublishedDate.fromJson(Map<String, dynamic> json) {
    // 用raw字符串前缀r,避免$被当作插值符号,直接读取JSON中的$date键
    this.$date = json[r"$date"];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = <String, dynamic>{};
    // 序列化时也固定用$date作为键
    data[r"$date"] = this.$date;
    return data;
  }
}

使用方式

解析完成后,你可以通过如下方式访问日期值:

// 假设book是你解析得到的BookData实例
String? publishDate = book.publishedDate?.$date;

内容的提问来源于stack exchange,提问作者a-starck02

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 01:27:00