添加到自定义类中的列表,然后将其转换为 json String

Posted

技术标签:

【中文标题】添加到自定义类中的列表,然后将其转换为 json String【英文标题】:adding to a list inside a custom class, then convert it to json String 【发布时间】:2021-08-15 21:46:18 【问题描述】:

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

我的问题:

如何访问列表并添加到列表中?我试过Segments.segments,但效果不佳。 如何使用类将列表转换为json? 如何检索列表中的项目。

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

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;
  

【问题讨论】:

检查是否有帮助:***.com/questions/61316208/… 您看到的错误是什么?你能从你使用Segments的实际位置添加一些代码吗? @dgilperez 我没有收到错误,因为我不知道该怎么做,我是编程新手,即使我应该也不懂链接中的内容。当我感觉聪明时,我会再试一次,谢谢你们的时间! @DarShan ^^^^^^ 【参考方案1】:

这行得通吗?

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

print(list.segments);

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

之后你应该可以做到

list.toJson();

获取json列表。

最后,您始终可以像这样在List 上使用迭代器来返回每个Segment

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

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

【讨论】:

以上是关于添加到自定义类中的列表,然后将其转换为 json String的主要内容,如果未能解决你的问题,请参考以下文章

将 xib 中的子视图添加到自定义 UIView

将子视图添加到自定义类

是否可以将 GestureRecognizer 添加到自定义 UIView 子视图中的标签

需要将“活动”类添加到自定义 WordPress 导航菜单

将Json反序列化为Entity Framework无法将int转换为type

spring配置文件(application.propertiesapplication.ymlapplication.yaml))中的配置项加载到自定义类中的方法