【问题标题】:How to check if JSON array is empty in Flutter如何在 Flutter 中检查 JSON 数组是否为空
【发布时间】:2021-04-10 05:02:30
【问题描述】:

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

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

我的代码在下面,一直在尝试查看是否可以检查“项目”以查看它是否为空,以及检查它的长度并查看它是否等于 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'],
      );
    }
  }
}

【问题讨论】:

    标签: json api flutter


    【解决方案1】:

    你可以试试这个

    return AllergyAlert(
       title: json['items'].isEmpty ? 'No new allergy alerts' : json['items'][0]['title'],
    );
    

    【讨论】:

    • 感谢您解决了我遇到的问题,并且三元运算符使代码更加简洁,感谢
    【解决方案2】:

    首先创建一个类来解码您的 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
    

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      相关资源
      最近更新 更多