如何在颤动中获取复杂的 Json 对象?

Posted

技术标签:

【中文标题】如何在颤动中获取复杂的 Json 对象?【英文标题】:How to fetch complex Json objects in flutter? 【发布时间】:2020-11-28 00:13:12 【问题描述】:

这是我要获取“分期付款”数组值的 API 响应

 
 "unit":
       
    .....
      ,
 "receipt": 
 
   .....
 ,
"instalments": [
    
        "payment_type": "5",
        "amount": "3",
        "bank_name": "ABU DHABI COMMERCIAL BANK",
        "paid_date": "2020-08-07 01:11:02",
        "status": "0",
    
    
        "payment_type": "5",
        "amount": "3",
        "bank_name": "ABU DHABI COMMERCIAL BANK",
        "paid_date": "2020-08-07 01:11:02",
        "status": "0",
    
    ]
  

我使用这个模式类从 API 中获取价值

class PaymentInstallment 
 String payment_type;
 String payment_amount;
 String payment_date;
 String status;

 PaymentInstallment(
     this.payment_type, this.payment_amount, this.payment_date, this.status);

  factory PaymentInstallment.fromjson(Map<String, dynamic> json) 
    return PaymentInstallment(
    payment_type: json['payment_type'],
    payment_amount: json['amount'],
  payment_date: json['paid_date'],
  status: json['status'],
       );
     
    

这是我的列表并将服务器的响应添加到它

   List<PaymentInstallment> _list = [];


  final response = await http.get(
    url,
    headers: "Accept": "application/json", "Authorization": token,
   );
   var response = jsonDecode(response.body);
    setState(() 
    for (Map temppayment in response) 
      _list.add(PaymentInstallment.fromjson(temppayment));
     
     );

如何将“分期付款”数组中的所有数组值添加到列表中

【问题讨论】:

json 数组“分期付款”中的字段与您在 PaymentInstallmet 类中的字段明显不同 里面有我只贴几张的值 response["installments"] 这有你的 API 的列表或所有数组就用这个 【参考方案1】:

试试这个

var response = jsonDecode(response.body);
List installmentList = List.from(response["installment"]);
setState(()
   _list = installmentList.map((f) => PaymentInstallment.fromJson(f)).toList();
);

如果它没有循环,试试这个

List tempList = [];
installmentList.forEach((f) => tempList.add(f));
setState(()
  _list = tempList;
);

【讨论】:

谢谢,但它只显示了如何循环它的第一个索引值? 对不起@Marzook 我没明白你的问题 @Marzook 检查另一个选项。我已经更新了答案

以上是关于如何在颤动中获取复杂的 Json 对象?的主要内容,如果未能解决你的问题,请参考以下文章

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

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

如何在颤动中检索json数据元素以列出view.builder?

如何在颤动中加载数据之前显示进度对话框?

如何从复杂的 JSON 对象中获取值?

如何在颤动中将Json数据传递到多屏