程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了未从 json 列表中获取所需的值 - 颤动大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决未从 json 列表中获取所需的值 - 颤动?

开发过程中遇到未从 json 列表中获取所需的值 - 颤动的问题如何解决?下面主要结合日常开发的经验,给出你关于未从 json 列表中获取所需的值 - 颤动的解决方法建议,希望对你解决未从 json 列表中获取所需的值 - 颤动有所启发或帮助;

我有这个代码,可以从 online json data 获取值并打印其值@H_301_1@

@H_108_4@ma​​in.dart@H_301_1@

final String url = 'https://raw.githubusercontent.com/BrightCode1/ohms-Json/master/categorIEs.Json';
  List<JsonModel> mymodel = [];
  List<CatSubcategory> subCate = [];
  int localint;
@overrIDe
  voID initState() {
    // Todo: implement initState
    super.initState();
    localint = 0;
    loadData(localint);
  }

  loadData(int dataint) async {
    var res = await http.get(url,headers: {"Accept": "application/Json"});
    if (res.statusCode == 200) {
      String resBody = res.body;
      var JsonDecode = Json.decode(resBody);
      for (var data in JsonDecodE) {

        data['cat_subcategory'].map((X) {
          return subCate.add(
              CatSubcategory(subname: x['sub_name'],subImage: x['sub_image']));
        }).toList();

        mymodel.add(JsonModel(
            category: data['category'],catID: data['cat_ID'],catIcon: data['cat_icon'],catSubcategory: subCatE));
        setState(() {});
      }

      print(mymodel[dataInt].catSubcategory.length);

    } else {
      print("Something went wrong!");
    }

  }

我的模型.dart@H_301_1@

class JsonModel {
  JsonModel({
    this.category,this.catID,this.catIcon,this.catSubcategory,});

  String category;
  String catID;
  String catIcon;
  List<CatSubcategory> catSubcategory;

  factory JsonModel.fromJson(Map<String,dynamic> Json) => JsonModel(
    category: Json["category"],catID: Json["cat_ID"],catIcon: Json["cat_icon"],catSubcategory: List<CatSubcategory>.from(
        Json["cat_subcategory"].map((X) => CatSubcategory.fromJson(X))),);

  Map<String,dynamic> toJson() => {
    "category": category,"cat_ID": catID,"cat_icon": catIcon,"cat_subcategory":
    List<dynamic>.from(catSubcategory.map((X) => x.toJson())),};
}

class CatSubcategory {
  CatSubcategory({
    this.subname,this.subImage,});

  String subname;
  String subImage;

  factory CatSubcategory.fromJson(Map<String,dynamic> Json) => CatSubcategory(
    subname: Json["sub_name"],subImage: Json["sub_image"],dynamic> toJson() => {
    "sub_name": subname,"sub_image": subImage,};
}

现在唯一的问题是,当我尝试在第一个列表的子类别上打印长度时,它给了我 24 而不是 6,我像这样打印 {{1} }. @H_84_7@mymodel[dataInt].catSubcategory.length 是 0,这意味着它应该打印出类别为 dataInt 的子项("cat_subcategory")的长度,但它正在打印其他 lis 的所有其他子项。所以请问我该怎么做。如果您需要更多解释,请告诉我@H_301_1@

解决方法

如果您已经知道 json 的架构,我会避免从头开始编写自己的模型。

只需使用诸如 https://app.quicktype.io/ 之类的东西,只需粘贴您的 json 即可获得

import 'dart:convert';


class Root {
    Root({
        this.category,this.catId,this.catIcon,this.catSubcategory,});

    String category;
    String catId;
    String catIcon;
    List<CatSubcategory> catSubcategory;

    factory Root.fromJson(Map<String,dynamic> json) => Root(
        category: json["category"],catId: json["cat_id"],catIcon: json["cat_icon"] == null ? null : json["cat_icon"],catSubcategory: List<CatSubcategory>.from(json["cat_subcategory"].map((X) => CatSubcategory.fromJson(X))),);

    Map<String,dynamic> toJson() => {
        "category": category,"cat_id": catId,"cat_icon": catIcon == null ? null : catIcon,"cat_subcategory": List<dynamic>.from(catSubcategory.map((X) => x.toJson())),};
}

class CatSubcategory {
    CatSubcategory({
        this.subName,this.subImage,});

    String subName;
    String subImage;

    factory CatSubcategory.fromJson(Map<String,dynamic> json) => CatSubcategory(
        subName: json["sub_name"],subImage: json["sub_image"],dynamic> toJson() => {
        "sub_name": subName,"sub_image": subImage,};
}

然后你应该很好

loadData(int dataint) async {
    var res = await http.get(url,headers: {"Accept": "application/json"});
    if (res.statusCode == 200) {
           String resBody = res.body;
           var list = json.decode(resBody) as List;
           List<Root> items = list.map((i)=>Root.fromJson(i)).toList();
           print(items[0].catSubcategory.length);
      }


    } else {
      print("Something went wrong!");
    }

  }

https://repl.it/talk/share/Sample/118111

大佬总结

以上是大佬教程为你收集整理的未从 json 列表中获取所需的值 - 颤动全部内容,希望文章能够帮你解决未从 json 列表中获取所需的值 - 颤动所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。