How to use this Json inside a Multi level drop Down Menu in flutter/dart

Viewed 111
{
   "cars": {

     "Nissan": [

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

     "Ford": [

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

I want to parse json into class object and use it inside a multi-level drop down. I am struggling to map inside the drop down menu button

1 Answers

Here is the model Class for your Data with the help of fromJson Function you can turn your json data into Class Object and can access it as per the structure of the Model class.

Model Class Generate Link

  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;
  }
}
Related