首页 > 解决方案 > 如何在颤振/飞镖的多级下拉菜单中使用此 Json

问题描述

{
   "cars": {

     "Nissan": [

        {"model": "Sentra", "doors":4},
        {"model": "Maxima", "doors":4},
        {"model": "Skyline", "doors":2}
     ],

     "Ford": [

        {"model": "Taurus", "doors":4},
        {"model": "Escort", "doors":4}
     ]
  }
} 

我想将 json 解析为类对象并在多级下拉列表中使用它。我正在努力映射下拉菜单按钮

标签: flutterdartflutter-layoutflutter-webflutter-test

解决方案


这是您的数据的模型类,在 fromJson 函数的帮助下,您可以将 json 数据转换为类对象,并可以根据模型类的结构访问它。

模型类生成链接

  class CarsData {
  Cars cars;

  CarsData({this.cars});

  CarsData.fromJson(Map<String, dynamic> json) {
    cars = json['cars'] != null ? new Cars.fromJson(json['cars']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.cars != null) {
      data['cars'] = this.cars.toJson();
    }
    return data;
  }
}

class Cars {
  List<Nissan> nissan;
  List<Ford> ford;

  Cars({this.nissan, this.ford});

  Cars.fromJson(Map<String, dynamic> json) {
    if (json['Nissan'] != null) {
      nissan = new List<Nissan>();
      json['Nissan'].forEach((v) {
        nissan.add(new Nissan.fromJson(v));
      });
    }
    if (json['Ford'] != null) {
      ford = new List<Ford>();
      json['Ford'].forEach((v) {
        ford.add(new Ford.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.nissan != null) {
      data['Nissan'] = this.nissan.map((v) => v.toJson()).toList();
    }
    if (this.ford != null) {
      data['Ford'] = this.ford.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class Nissan {
  String model;
  int doors;

  Nissan({this.model, this.doors});

  Nissan.fromJson(Map<String, dynamic> json) {
    model = json['model'];
    doors = json['doors'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['model'] = this.model;
    data['doors'] = this.doors;
    return data;
  }
}

推荐阅读