I\'m just trying to find a way to convert a json response (from a REST API) into POJO (As used in android) so that I can use the received data into my application as using M
SO, after some tries with the json_serializable library, I came up with my own solution and it doesnt require any external library at all and works like a charm. This way i had to write less boilerplate code and i think is a clean way to do this.
Here's how to make the model
class SideMenuRes {
final int status;
final String message;
final List sideMenuData;
SideMenuRes({this.status, this.message, this.sideMenuData});
factory SideMenuRes.fromJson(Map json) {
return SideMenuRes(
status: json['status'],
message: json['message'],
sideMenuData: json['status'] == 200 ? (json['data'] as List).map((i) => new
SideMenuDatum.fromJson(i)).toList() : null,
);
}
}
class SideMenuDatum {
final Menu menu;
SideMenuDatum({this.menu});
factory SideMenuDatum.fromJson(Map json) {
return SideMenuDatum(
menu: Menu.fromJson(json['menu']),
);
}
}
class Menu {
final String megamenu_id;
final String language_id;
final String title;
final String description;
final List subMenu;
Menu({this.megamenu_id, this.language_id, this.title, this.description, this.subMenu});
factory Menu.fromJson(Map json) {
return Menu(
megamenu_id: json['megamenu_id'],
language_id: json['language_id'],
title: json['title'],
description: json['description'],
subMenu: json['submenu'] != null ? (json['submenu'] as List).map((i) => new SubMenu.fromJson(i)).toList() : null
);
}
}
class SubMenu {
final Zero zero;
final List subSubMenu;
SubMenu({this.zero, this.subSubMenu});
factory SubMenu.fromJson(Map json) {
return SubMenu(
zero: Zero.fromJson(json['0']),
subSubMenu: (json['subsubmenu'] as List).map((i) => new SubSubMenu.fromJson(i)).toList()
);
}
}
class Zero {
final Info info;
Zero({this.info});
factory Zero.fromJson(Map json) {
return Zero(
info: Info.fromJson(json['info']),
);
}
}
class SubSubMenu {
final InfoSub infoSub;
SubSubMenu({this.infoSub});
factory SubSubMenu.fromJson(Map json) {
return SubSubMenu(
infoSub: InfoSub.fromJson(json['infosub'])
);
}
}
class InfoSub {
final String megamenu_id;
final String language_id;
final String title;
final String description;
InfoSub({this.megamenu_id, this.language_id, this.title, this.description});
factory InfoSub.fromJson(Map json) {
return InfoSub(
megamenu_id: json['megamenu_id'],
language_id: json['language_id'],
title: json['title'],
description: json['description']
);
}
}
class Info {
final String megamenu_id;
final String language_id;
final String title;
final String description;
Info({this.megamenu_id, this.language_id, this.title, this.description});
factory Info.fromJson(Map json) {
return Info(
megamenu_id: json['megamenu_id'],
language_id: json['language_id'],
title: json['title'],
description: json['description']
);
}
}
And calling it like this
SubMenuRes subMenuRes = SubMenuRes.fromJson(response.data);
That's it!