Dart:如何反序列化对象列表

时间:2019-10-08 16:34:49

标签: json list dart deserialization

我有一个“ 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文件反序列化。 正确的方法是什么?

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

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);
}