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
相关产品推荐
相关产品推荐

