如何在Flutter中检查JSON数组是否为空

4

尝试创建一个if语句以检查API是否返回包含数据的“items”

这是API网址,您可以看到该特定数据查询的items为空https://data.food.gov.uk/food-alerts/id?since=2021-01-04T00:00:00Z

下面是我的代码,一直尝试检查'items'是否为null,还要检查其长度并查看是否等于0,但迄今为止都没有成功

class AllergyAlert {
  final String title;

  AllergyAlert({this.title});

  factory AllergyAlert.fromJson(Map<String, dynamic> json) {
    if (json['items'] == null) {
      return AllergyAlert(
        title: 'No new allergy alerts',
      );
    } else {
      return AllergyAlert(
        title: json['items'][0]['title'],
      );
    }
  }
}

2个回答

3
您可以尝试这个。
return AllergyAlert(
   title: json['items'].isEmpty ? 'No new allergy alerts' : json['items'][0]['title'],
);

谢谢你解决了我遇到的问题,三元运算符使代码更加简洁,非常感谢。 - Billy Noyes

0

首先创建一个类来解码您的json字符串。您可以在此处粘贴您的json Quicktype

然后可以使用FutureBuilder来加载数据。这是一个完整的示例Solution

之后,您只需使用定义的名称进行检查。例如:

class Allergen {
Allergen({
    this.meta,
    this.items,
});

final Meta meta;
final List<dynamic> items;

factory Allergen.fromJson(Map<String, dynamic> json) => Allergen(
    meta: Meta.fromJson(json["meta"]),
    items: List<dynamic>.from(json["items"].map((x) => x)),
);

Map<String, dynamic> toJson() => {
    "meta": meta.toJson(),
    "items": List<dynamic>.from(items.map((x) => x)),
};
}

class Meta {
Meta({...//more here

你可以直接检查列表的长度

Allergen.items.length==0?//Do This://Else This

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