解析json时Flutter -循环不工作

yftpprvb  于 2022-11-30  发布在  Flutter
关注(0)|答案(1)|浏览(107)

我正在尝试创建模型并解析来自api的json数据。
为此我创建了model类,如下所示

class FeatureModel {
  String? PlanFeatures;
  bool? FeatureStatus;

  FeatureModel({this.PlanFeatures, this.FeatureStatus});

  FeatureModel.fromJson(parsonJson) {
    PlanFeatures = parsonJson['PlanFeatures'];
    FeatureStatus = parsonJson['FeatureStatus'];
  }
}

现在我正在尝试用循环的帮助来解析json
让我告诉你我方法

List<FeatureModel> featureModel = [];

Uri featureAPI = Uri.parse(
    planFeatureApi);
apiCall() async {
  try {
    http.Response response = await http.get(featureAPI);
    // print(response.statusCode);

    if (response.statusCode == 200) {
      var decode = json.decode(response.body);
      print(decode);
      for (var i = 0; i < decode.length; i++) {
        print(i);
        featureModel.add(
          FeatureModel.fromJson(decode[i]),
        );
      }
    }
  } catch (e) {}
}

我在这里宣布

onPressed: () async{
                      await  apiCall();
}

但问题是在这里循环不工作,而解析数据在该特定代码i保持在0只
当我删除featureModel.add( FeatureModel.fromJson(decode[i]), );时,我开始增加,直到10
请让我知道,如果我犯了任何错误或什么提前感谢
下面是api respone的示例。

[{"PlanFeatures":"Video Link Sharing","FeatureStatus":"true"},{"PlanFeatures":"Email \u0026amp; Telephonic Support","FeatureStatus":"true"},{"PlanFeatures":"Remove Pixeshare Branding","FeatureStatus":"false"},{"PlanFeatures":"Add Custom logo on uploaded photos","FeatureStatus":"false"},{"PlanFeatures":"Get Visitor Info","FeatureStatus":"false"},{"PlanFeatures":"Mobile Apps","FeatureStatus":"false"},{"PlanFeatures":"Send Questionnaries","FeatureStatus":"false"},{"PlanFeatures":"Create \u0026amp; Send Quotation","FeatureStatus":"false"},{"PlanFeatures":"Online Digital Album Sharing","FeatureStatus":"false"},{"PlanFeatures":"Analytics","FeatureStatus":"false"}]

谢谢

ru9i0ody

ru9i0ody1#

我发现了很多错误,首先,fromJson不是一个factory构造函数,并且没有从JSON返回类示例。第二个错误是,您添加的示例中的bool值是String,而不是bool,因此我们需要检查它。
尝试将模型类更改为:

class FeatureModel {
  String? PlanFeatures;
  bool? FeatureStatus;

  FeatureModel({this.PlanFeatures, this.FeatureStatus});

  factory FeatureModel.fromJson(parsonJson) {
    return FeatureModel(
      PlanFeatures: parsonJson['PlanFeatures'],
      FeatureStatus: parsonJson['FeatureStatus'] == "false" ? false : true,
    );
  }
}

相关问题