问题描述
我有一个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}
final responseBody = json.decode(response.body)['elements'];
responseBody.forEach((item) {
_transactions.add(TransactionModel.fromJson(item));
});
解决方法
映射是实现它的更好方法。
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();
}