如何在Dart中遍历动态对象列表

3
我有一个动态列表,我正在从JSON响应解码它,如下所示:
[{Calcium: [47.92, mg, Red, 0.00169033008, ounce]}, {Choline: [71.88, mg, Red, 0.00253549512, ounce]}, {Copper: [0.08, mg, Red, 0.00000282192, ounce]}, {Crude fat: [70.28, g, Green, 2.47905672, ounce]}, {Folate: [23.96, mcg, Red, 0.00000084516504, ounce]}...]

在这个问题中,我需要检查给定的键是否存在。例如,检查键“Calcium”是否存在,如果存在,则需要获取属于该键的数组的索引0和索引2的值。我希望以迭代的方式执行此操作。
我应该如何在Dart中实现这一点?
我已经尝试过这个方法,但它不起作用,可能是我方法不对。
nutrientList.forEach((element) {

        if(nutrientList.contains("Calcium")) {
          valCalcium = element.calcium[0];
          calciumClr = element.calcium[2];
        } else {}

  1. 你的 if 检查应该使用 element.contains,而不是 nutrientList.contains
  2. 如果 element 是一个具有 element getter 的对象,则 element.calcium[0] 可以工作。但是,element 看起来是一个 Map<String, List<Object>>,所以你需要使用 element["Calcium"][0]
- jamesdlin
当然,它假设您的数据中只有一个“铜”元素,如果不是,则需要删除“.single”。 - pskink
1个回答

1
你可以创建一个对象,将Json对象映射到你需要的值上。让Calcium成为一个解析“Calcium”的对象。由于Map具有动态值,它可以处理List值。
class Calcium {
  final List<String> content;

  Calcium({
    required this.content,
  });

  factory Calcium.fromJson(Map<String, dynamic> json) {
    return Calcium(
      content: json['Calcium'],
    );
  }
}

接着,要获取对象内的详细信息,请使用Calcium.fromJson()解析json响应,然后通过调用Calcium.content获取List。

Calcium calcium = Calcium.fromJson(json);
List<String> calciumDetails = calcium.content;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接