【问题标题】:Dart: How to de-serialize a list of objectsDart:如何反序列化对象列表
【发布时间】:2020-02-05 23:42:06
【问题描述】:

我有一个类“SnapShot”,其中包含一些成员变量,例如 DateTime 和 double。我这样写了 fromJson / toJson:

class SnapShot {
  SnapShot (this.date, this.value);
  final DateTime date;
  final double value;
  SnapShot.fromJson(Map<String, dynamic> json)
      : date = DateTime.parse(json['date']),
        value = json['value']();

  Map<String, dynamic> toJson() =>
    {
      'date': date.toString(),
      'value': value
    };
}

我需要(反)序列化这些对象的列表(列表)到/从 json 文件。 这样做的正确方法是什么?

【问题讨论】:

    标签: json list dart deserialization


    【解决方案1】:

    这应该可以解决问题:

    import 'dart:convert';
    
    class SnapShot {
      SnapShot(this.date, this.value);
      final DateTime date;
      final double value;
      SnapShot.fromJson(Map<String, dynamic> json)
          : date = DateTime.parse(json['date']),
            value = json['value'];
    
      Map<String, dynamic> toJson() => {'date': date.toString(), 'value': value};
    
      @override
      String toString() => 'date: $date, value: $value';
    }
    
    void main() {
      final list = [SnapShot(DateTime.now(), 0.4), SnapShot(DateTime.now(), 1.5)];
      final asJson = json.encode(list);
    
      final decodedJson = json.decode(asJson) as List;
      final snapShots = decodedJson.map((map) => SnapShot.fromJson(map)).toList();
    
      print(snapShots);
    }
    

    【讨论】:

    • 太棒了@julemand101! “最终decodedJson = json.decode(asJson) as List; final snapShots = decodedJson.map((map) => SnapShot.fromJson(map)).toList();”成功了。谢谢!
    猜你喜欢
    • 2018-09-02
    • 2018-08-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-27
    • 2019-10-25
    • 2020-10-31
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多