首页 > 解决方案 > 添加到自定义类中的列表,然后将其转换为 json String

问题描述

我创建了这两个类以将列表保存在 sharedpreferences 中。

我的问题:

我看了很多例子和视频,但我还是不明白。

class Segment {
  final String chapter;
  final String from;
  final String to;

  Segment({this.chapter, this.from, this.to});

  factory Segment.fromJson(Map<String, dynamic> json) {
    return Segment(
      chapter: json['chapter'],
      from: json['from'],
      to: json['to'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'chapter': chapter,
      'from': from,
      'to': to,
    };
  }
}

&

class Segments {
  List<Segment> segments;

  Segments({this.segments});

  Segments.fromJson(Map<String, dynamic> json) {
    if (json['segments'] != null) {
      segments = [];
      json['segments'].forEach((v) {
        segments.add(new Segment.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.segments != null) {
      data['segments'] = this.segments.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

标签: jsonlistflutterdartsharedpreferences

解决方案


这行得通吗?

final list = Segments.fromJson({
  segments: [
    {
      'chapter': '1',
      'from': '1',
      'to': '1',
    },
    {
      'chapter': '2',
      'from': '2',
      'to': '2',
    },
  ]
});

print(list.segments);

在第一步中,您Segments使用包含列表的 json 实例化一个类,然后访问segments实例中的列表。

之后你应该可以做

list.toJson();

获取json列表。

最后,您始终可以使用迭代器List来返回 each Segment

list.segments.forEach((segment) => print(segment));

最后,我建议一些重命名,segments.segments包含Segment它的实例有点绕口令:)


推荐阅读