颤振解析复杂Json

颤振解析复杂Json,json,flutter,parsing,Json,Flutter,Parsing,我在从toMap()解码json时遇到问题。我对fromJson()函数没有异议。 我的主要目标是将其保存在共享首选项上。除了我得到空值的图像,所有的都正常工作 下面是我的toMap()方法: 除图像外,所有变量均正常工作 Map<String, dynamic> toMap() { var map = new Map<String, dynamic>(); ImagesModel img = ImagesModel();

我在从toMap()解码json时遇到问题。我对fromJson()函数没有异议。 我的主要目标是将其保存在共享首选项上。除了我得到空值的图像,所有的都正常工作

下面是我的toMap()方法: 除图像外,所有变量均正常工作

        Map<String, dynamic> toMap() {

        var map = new Map<String, dynamic>();
        ImagesModel img = ImagesModel();
        Map<String, dynamic> imagesList = img.toMap();
        map["id"] = id;
        map["name"] = name;
        map["description"] = description;
        map["catalog_visibility"] = catalog_visibility;
        map["short_description"] = short_description;
        map["regular_price"] = regular_price;
        map["sale_price"] = sale_price;
        map["date_created"] = date_created;
        map['images'] = imagesList; --> I got null value on this images
        return map;
      }
Map toMap(){
var map=newmap();
ImagesModel img=ImagesModel();
Map imagesList=img.toMap();
map[“id”]=id;
映射[“名称”]=名称;
地图[“说明”]=说明;
地图[“目录可见性”]=目录可见性;
地图[“短描述”]=短描述;
map[“常规价格”]=常规价格;
地图[“销售价格”]=销售价格;
地图[“创建日期”]=创建日期;
map['images']=imagesList;-->我在这些图像上得到了空值
返回图;
}
这是我的图像模型

   class ImagesModel{
      final int id;
      final String src;
      final String name;

      ImagesModel({this.id, this.src, this.name});
      factory ImagesModel.fromJSON(Map<String, dynamic> parsedJson){
        return ImagesModel(
          id: parsedJson['id'],
          src: parsedJson['src'],
          name: parsedJson['name']
        );
      }
      Map<String, dynamic> toMap() => {
        "id": id,
        "src": src,
        "name" :name,
      };
    }
类图像模型{
最终int id;
最终字符串src;
最后的字符串名;
ImagesModel({this.id,this.src,this.name});
factory ImagesModel.fromJSON(Map parsedJson){
返回图像模型(
id:parsedJson['id'],
src:parsedJson['src'],
名称:parsedJson['name']
);
}
映射toMap()=>{
“id”:id,
“src”:src,
“姓名”:姓名,
};
}
我的整个产品模型

      class ProductsModel {
      final int id;
      final String name;
      final String catalog_visibility;
      final String description;
      final String short_description;
      final String price;
      final String regular_price;
      final String sale_price;
      final String date_created;

      final List<CategoriesModel> categories;
      final List<ImagesModel> images;
      ProductsModel(
          {this.id,
          this.name,
          this.catalog_visibility,
          this.description,
          this.short_description,
          this.price,
          this.regular_price,
          this.sale_price,
          this.date_created,
          this.categories,
          this.images
          });

      factory ProductsModel.fromJSON(Map<String, dynamic> parsedJson) {
        var categoriesList = parsedJson['categories'] as List;
        var imagesList = parsedJson['images'] as List;
        List<ImagesModel> dataImages = imagesList.map((i) => ImagesModel.fromJSON(i)).toList();
        List<CategoriesModel> dataCategories =
        categoriesList.map((i) => CategoriesModel.fromJSON(i)).toList();
        return ProductsModel(
          id: parsedJson['id'],
          name: parsedJson['name'],
            catalog_visibility: parsedJson['catalog_visibility'],
            description: parsedJson['description'],
            short_description: parsedJson['short_description'],
            regular_price: parsedJson['regular_price'],
            sale_price: parsedJson['sale_price'],
            date_created: parsedJson['date_created'],
            categories: dataCategories,
          images: dataImages
        );

      }

      Map<String, dynamic> toMap() {

        var map = new Map<String, dynamic>();
        ImagesModel img = ImagesModel();
        Map<String, dynamic> imagesList = img.toMap();
        map["id"] = id;
        map["name"] = name;
        map["description"] = description;
        map["catalog_visibility"] = catalog_visibility;
        map["short_description"] = short_description;
        map["regular_price"] = regular_price;
        map["sale_price"] = sale_price;
        map["date_created"] = date_created;
        map['images'] = imagesList;
        return map;
      }
    }
类产品模型{
最终int id;
最后的字符串名;
最终字符串目录的可见性;
最终字符串描述;
最终字符串简短描述;
最终字符串价格;
最终字符串正常价格;
最终字符串销售价格;
创建的最终字符串日期;
最后名单类别;
最后列出图像;
产品模型(
{this.id,
这个名字,
这是目录的可见性,
这个.说明,,
这个,简短的描述,
这个价格,,
这是正常的价格,
这是我们的售价,
此.u创建的日期,
这是一个类别,
这是我的照片
});
factory ProductsModel.fromJSON(Map parsedJson){
var categoriesList=parsedJson['categories']作为列表;
var imagesList=parsedJson['images']作为列表;
List dataImages=imagesList.map((i)=>ImagesModel.fromJSON(i)).toList();
列出数据类别=
categoriesList.map((i)=>CategoriesModel.fromJSON(i)).toList();
退货产品模型(
id:parsedJson['id'],
名称:parsedJson['name'],
目录可见性:parsedJson['catalog\u visibility'],
description:parsedJson['description'],
short_description:parsedJson['short_description'],
常规价格:parsedJson[“常规价格”],
销售价格:parsedJson[“销售价格”],
创建日期:parsedJson['date\u created'],
类别:数据类别,
图像:数据图像
);
}
映射toMap(){
var map=newmap();
ImagesModel img=ImagesModel();
Map imagesList=img.toMap();
map[“id”]=id;
映射[“名称”]=名称;
地图[“说明”]=说明;
地图[“目录可见性”]=目录可见性;
地图[“短描述”]=短描述;
map[“常规价格”]=常规价格;
地图[“销售价格”]=销售价格;
地图[“创建日期”]=创建日期;
映射['images']=imagesList;
返回图;
}
}

构造函数没有参数。看看这个

ImagesModel img = ImagesModel(id:1,src:'value',name:'value');

Map toMap(){
var map=newmap();
ImagesModel img=ImagesModel(id:1,src:'value',name:'value');
Map imagesList=img.toMap();
map[“id”]=id;
映射[“名称”]=名称;
地图[“说明”]=说明;
地图[“目录可见性”]=目录可见性;
地图[“短描述”]=短描述;
map[“常规价格”]=常规价格;
地图[“销售价格”]=销售价格;
地图[“创建日期”]=创建日期;
map['images']=imagesList;-->我在这些图像上得到了空值
返回图;
}

只需检查图像列表是否为空。像

      Map<String, dynamic> toMap() {

        var map = new Map<String, dynamic>();
        ImagesModel img = ImagesModel();
        Map<String, dynamic> imagesList = img.toMap();
        map["id"] = id;
        map["name"] = name;
        map["description"] = description;
        map["catalog_visibility"] = catalog_visibility;
        map["short_description"] = short_description;
        map["regular_price"] = regular_price;
        map["sale_price"] = sale_price;
        map["date_created"] = date_created;

 
         if (this.images != null) {
        data['images'] = this.images.map((v) => v.toJson()).toList();
    }
 
        return map;
      }
Map toMap(){
var map=newmap();
ImagesModel img=ImagesModel();
Map imagesList=img.toMap();
map[“id”]=id;
映射[“名称”]=名称;
地图[“说明”]=说明;
地图[“目录可见性”]=目录可见性;
地图[“短描述”]=短描述;
map[“常规价格”]=常规价格;
地图[“销售价格”]=销售价格;
地图[“创建日期”]=创建日期;
如果(this.images!=null){
data['images']=this.images.map((v)=>v.toJson()).toList();
}
返回图;
}

print(imagesList)显示什么?它显示“images:{id:null,src:null,name:null}”您可以发送JSON响应吗?所以问题可能是保存数据。列表中有一个对象,但所有值都是null@P4yam只有images对象为null,并且对象(产品)上的其余值具有dataimages:{id:null,src:null,name:null}以下是关于图像的结果。如果显示完整的Json,则从id到data_创建的所有产品都有一个dataman。所以它很容易解决。好了,你想把它全部保存到SharedReference吗?不。我只需要productsmodel和image模型上的内容。请检查。我的ans
      Map<String, dynamic> toMap() {

        var map = new Map<String, dynamic>();
        ImagesModel img = ImagesModel();
        Map<String, dynamic> imagesList = img.toMap();
        map["id"] = id;
        map["name"] = name;
        map["description"] = description;
        map["catalog_visibility"] = catalog_visibility;
        map["short_description"] = short_description;
        map["regular_price"] = regular_price;
        map["sale_price"] = sale_price;
        map["date_created"] = date_created;

 
         if (this.images != null) {
        data['images'] = this.images.map((v) => v.toJson()).toList();
    }
 
        return map;
      }