Дарт: Как десериализовать список объектов - PullRequest
0 голосов
/ 08 октября 2019

У меня есть класс «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
    };
}

Мне нужно (де) сериализовать список этих объектов (List) в / из файла json. Как правильно это сделать?

1 Ответ

0 голосов
/ 08 октября 2019

Это должно сработать:

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