如何在颤动中将对象编码为 Json

Posted

技术标签:

【中文标题】如何在颤动中将对象编码为 Json【英文标题】:How to encode Object to Json in flutter 【发布时间】:2021-04-20 08:54:54 【问题描述】:

我有一个主题对象

class Subject 
  String subjectName;
  int pages;
  int fullMarks;

  Future<Map<String, dynamic>> toJson() async 
    return 
      'name': name,
      'pages': pages,
      'fullMarks': fullMarks,
    
  

和学生对象

class Student 
  String name;
  int rank;
  Subject sub;

  Future<Map<String, dynamic>> toJson() async 
    return 
      'name': name,
      'rank': rank,
      'subject': sub.toJson(),
    
  

我想在 POST 请求中发送这个学生对象。

我做到了:这里的 student 是 Student 类的对象。

var data = jsonEncode(await student.toJson());

但在数据中主题值为空。 有谁知道为什么??

【问题讨论】:

您是否尝试过调试代码并检查student.sub 是否为非空? 是的,主题对象不为空,我已调试。 【参考方案1】:

您需要在sub.toJson()之前添加await作为

'subject': await sub.toJson()

await 将允许future 在等待结果的同时完成,否则将立即返回future 对象,这是不希望的。

【讨论】:

甚至更好,不要让toJson()函数async,没必要 @mfkw1 感谢这也有效,我是 dart 和 flutter 的新手,所以对 async 和 await 有点困惑。

以上是关于如何在颤动中将对象编码为 Json的主要内容,如果未能解决你的问题,请参考以下文章

如何在颤动中将 json 数据转换为 List<widgets>?

如何在颤动中对对象列表中的json字符串进行编码

如何在颤动中将 Blob 转换为图像

我想在颤动中将字符串转换为 Json 字符串?

无法在颤动中将json转换为listview

如何在颤动中将默认值设置为下拉菜单?