There was a issue you found because loads
and date_ranges
contain same child name data
but there properties are different that's why your model class return error
Here I write a code for loads, please have a look
void main() {
Map<int, String> map = {
};
var mapdata = {
"loads": {
"data": [
{
"id": 50,
"value": "#1038 Fort Dodge, IA - Algona, IA"
},
{
"id": 39,
"value": "#1039 Louisville, KY - Louisville, KY"
}
]
},
"date_ranges": {
"data": [
{
"id": "all_time",
"value": "All"
},
{
"id": "this_year",
"value": "This year"
}
]
}
};
TestModel test = TestModel.fromJson(mapdata);
test.loads.data.forEach((e)=>map[e.id]=e.value);
print(map);
}
class TestModel {
Loads loads;
Loads dateRanges;
TestModel({this.loads, this.dateRanges});
TestModel.fromJson(Map<String, dynamic> json) {
loads = json['loads'] != null ? new Loads.fromJson(json['loads']) : null;
dateRanges = json['date_ranges'] != null
? new Loads.fromJson(json['date_ranges'])
: null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.loads != null) {
data['loads'] = this.loads.toJson();
}
if (this.dateRanges != null) {
data['date_ranges'] = this.dateRanges.toJson();
}
return data;
}
}
class Loads {
List<Data> data;
Loads({this.data});
Loads.fromJson(Map<String, dynamic> json) {
if (json['data'] != null) {
data = new List<Data>();
json['data'].forEach((v) {
data.add(new Data.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
if (this.data != null) {
data['data'] = this.data.map((v) => v.toJson()).toList();
}
return data;
}
}
class Data {
var id; // here changes the type
String value;
Data({this.id, this.value});
Data.fromJson(Map<String, dynamic> json) {
id = json['id'];
value = json['value'];
}
Map<String, String> toJson() {
final Map<String, String> data = new Map<String, String>();
data['id'] = this.id;
data['value'] = this.value;
return data;
}
}
map result:
{50: #1038 Fort Dodge, IA - Algona, IA, 39: #1039 Louisville, KY - Louisville, KY}
N.B: Make your id dynamic with var
type