【问题标题】:how to read json elements [closed]如何读取 json 元素
【发布时间】:2021-07-24 22:01:35
【问题描述】:

我有一个 json 来读取项目并将其添加到列表中,但 foreach 方法不起作用:( 我的 json 是:

{"elements":[{"id":9,"payVal":222,"payDate":"2021-08-10T19:30:00Z","isCharity":true,"imgFileUrls":[],"firstName":"Admin","lastName":"Admin","nationalCode":"2280113732","applicationUserId":"5701c92c-a1ee-4721-91de-08d932684d82"}],"totalElements":6}

我的代码(responseBody 包含 json):

final responseBody = json.decode(response.body)['elements'];
  responseBody.forEach((item) {
    _transactions.add(TransactionModel.fromJson(item));
  });

【问题讨论】:

  • 试试 List.from(json.decode(response.body)['elements']);
  • 你能分享你的TransactionModel
  • 你应该使用映射而不是每个方法。
  • 查看How to Ask 来改进这个问题。 minimal reproducible example 很适合这里

标签: json flutter foreach


【解决方案1】:

映射是实现它的更好方法。

TransactionModel 类

class TransactionModel {
  final int id;
  final int payVal;
  final String payDate;
  final bool isCharity;
  final List imgFileUrls;
  final String firstName;
  final String lastName;
  final String nationalCode;
  final String applicationUserId;
  
TransactionModel(
  this.id, this.payVal, this.payDate, this.isCharity,this.imgFileUrls, 
  this.firstName, this.lastName, this.nationalCode,
  this.applicationUserId);

  static TransactionModel fromMap(Map<String, dynamic> map) {
      return TransactionModel(
          map['id'],
          map['payVal'],
          map['payDate'],
          map['isCharity'],
          map['imgFileUrls'],
          map['firstName'],
          map['lastName'],
          map['nationalCode'],
          map['applicationUserId']);
 }
}

现在让我们创建一个读取 JSON 并返回事务模型对象列表的方法。

List<TransactionModel> readJson(Map<String, dynamic> data) {
    return List<Map<String, dynamic>>.from(data['elements'])
      .map((e) => TransactionModel.fromMap(e))
      .toList();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    相关资源
    最近更新 更多