Below is the response how to get this data in flutter.I wants to get image file path of all fields like aadhaar,pan card and business ownership proof. I needs to know how to get the response when it is structured like this?
{
"data": {
"pan": {
"verified": true,
"status": "Approve",
"comment": "ok",
"holder": "VISHWAJEET VIJAY KOLAPKAR",
"number": "DYPPK8990B",
"files": [...,...]
},
"aadhar": {
"verified": true,
"status": "Approved",
"comment": "ok",
"holder": "",
"number": "000000001112",
"address": "",
"dob": "Not available on aadhaar",
"gender": "MALE",
"files": [...,...]
},
"mobile": {
"verified": true,
"status": "In-Progress",
"comment": "",
"number": "9527796311",
"countryCode": "91",
"holder": "Aniket Ratnakar Baviskar",
"address": "Plot no.57,, Margashirsh sector, Datt chouk, Cidco, Nashik, Mh-422009",
"email": "baviskaranu#gmail.com"
},
"faceMatch": {
"verified": "true",
"status": "In-Progress",
"comment": "",
"holder": "Vodafone Vk",
"matchPercentage": "100.00%",
"message": "Verification completed with positive result",
"dob": "NA",
"files": [...,...]
},
"address": {
"status": "Approved",
"comment": "ok",
"verified": false,
"files": [...,...]
},
"bankStatement": {
"comment": "ok",
"status": "Approved",
"verified": false,
"files": [...,...]
},
"business": {
"documentNumber": "8877",
"documentType": "Board Resolution (for companies)",
"status": "Approved",
"verified": false,
"files": [...,...]
},
"financial": {
"comment": "ok",
"status": "Approved",
"verified": false,
"files": [...,...]
},
"gst": {
"verified": false,
"files": [...,...]
},
"ownership": {
"documentNumber": "55555",
"documentType": "Electricity Bill",
"status": "Approved",
"verified": false,
"files": [...,...]
},
"partnership": {
"comment": "ok",
"status": "Approved",
"verified": false,
"files": [...,...]
},
"vintage": {
"status": "Approved",
"verified": false,
"files": [...,...]
},
"storeImages": {
"comment": "ok",
"status": "Approved",
"verified": false,
"files": [...,...]
}
},
"status": true
}
after you get the data pass it to this function
final yourModel = yourModelFromMap(jsonString);
it will parse json to this object
and you can use it like
yourModel.data.<any value you want>
.
import 'dart:convert';
YourModel yourModelFromMap(String str) => YourModel.fromMap(json.decode(str));
String yourModelToMap(YourModel data) => json.encode(data.toMap());
class YourModel {
YourModel({
required this.data,
required this.status,
});
Data data;
bool status;
factory YourModel.fromMap(Map<String, dynamic> json) => YourModel(
data: Data.fromMap(json["data"]),
status: json["status"],
);
Map<String, dynamic> toMap() => {
"data": data.toMap(),
"status": status,
};
}
class Data {
Data({
required this.pan,
required this.aadhar,
required this.mobile,
required this.faceMatch,
required this.address,
required this.bankStatement,
required this.business,
required this.financial,
required this.gst,
required this.ownership,
required this.partnership,
required this.vintage,
required this.storeImages,
});
Pan pan;
Aadhar aadhar;
Mobile mobile;
FaceMatch faceMatch;
Address address;
Address bankStatement;
Business business;
Address financial;
Gst gst;
Business ownership;
Address partnership;
Vintage vintage;
Address storeImages;
factory Data.fromMap(Map<String, dynamic> json) => Data(
pan: Pan.fromMap(json["pan"]),
aadhar: Aadhar.fromMap(json["aadhar"]),
mobile: Mobile.fromMap(json["mobile"]),
faceMatch: FaceMatch.fromMap(json["faceMatch"]),
address: Address.fromMap(json["address"]),
bankStatement: Address.fromMap(json["bankStatement"]),
business: Business.fromMap(json["business"]),
financial: Address.fromMap(json["financial"]),
gst: Gst.fromMap(json["gst"]),
ownership: Business.fromMap(json["ownership"]),
partnership: Address.fromMap(json["partnership"]),
vintage: Vintage.fromMap(json["vintage"]),
storeImages: Address.fromMap(json["storeImages"]),
);
Map<String, dynamic> toMap() => {
"pan": pan.toMap(),
"aadhar": aadhar.toMap(),
"mobile": mobile.toMap(),
"faceMatch": faceMatch.toMap(),
"address": address.toMap(),
"bankStatement": bankStatement.toMap(),
"business": business.toMap(),
"financial": financial.toMap(),
"gst": gst.toMap(),
"ownership": ownership.toMap(),
"partnership": partnership.toMap(),
"vintage": vintage.toMap(),
"storeImages": storeImages.toMap(),
};
}
class Aadhar {
Aadhar({
required this.verified,
required this.status,
required this.comment,
required this.holder,
required this.number,
required this.address,
required this.dob,
required this.gender,
required this.files,
});
bool verified;
String status;
String comment;
String holder;
String number;
String address;
String dob;
String gender;
List<dynamic> files;
factory Aadhar.fromMap(Map<String, dynamic> json) => Aadhar(
verified: json["verified"],
status: json["status"],
comment: json["comment"],
holder: json["holder"],
number: json["number"],
address: json["address"],
dob: json["dob"],
gender: json["gender"],
files: List<dynamic>.from(json["files"].map((x) => x)),
);
Map<String, dynamic> toMap() => {
"verified": verified,
"status": status,
"comment": comment,
"holder": holder,
"number": number,
"address": address,
"dob": dob,
"gender": gender,
"files": List<dynamic>.from(files.map((x) => x)),
};
}
class Address {
Address({
required this.status,
required this.comment,
required this.verified,
required this.files,
});
String status;
String comment;
bool verified;
List<dynamic> files;
factory Address.fromMap(Map<String, dynamic> json) => Address(
status: json["status"],
comment: json["comment"],
verified: json["verified"],
files: List<dynamic>.from(json["files"].map((x) => x)),
);
Map<String, dynamic> toMap() => {
"status": status,
"comment": comment,
"verified": verified,
"files": List<dynamic>.from(files.map((x) => x)),
};
}
class Business {
Business({
required this.documentNumber,
required this.documentType,
required this.status,
required this.verified,
required this.files,
});
String documentNumber;
String documentType;
String status;
bool verified;
List<dynamic> files;
factory Business.fromMap(Map<String, dynamic> json) => Business(
documentNumber: json["documentNumber"],
documentType: json["documentType"],
status: json["status"],
verified: json["verified"],
files: List<dynamic>.from(json["files"].map((x) => x)),
);
Map<String, dynamic> toMap() => {
"documentNumber": documentNumber,
"documentType": documentType,
"status": status,
"verified": verified,
"files": List<dynamic>.from(files.map((x) => x)),
};
}
class FaceMatch {
FaceMatch({
required this.verified,
required this.status,
required this.comment,
required this.holder,
required this.matchPercentage,
required this.message,
required this.dob,
required this.files,
});
String verified;
String status;
String comment;
String holder;
String matchPercentage;
String message;
String dob;
List<dynamic> files;
factory FaceMatch.fromMap(Map<String, dynamic> json) => FaceMatch(
verified: json["verified"],
status: json["status"],
comment: json["comment"],
holder: json["holder"],
matchPercentage: json["matchPercentage"],
message: json["message"],
dob: json["dob"],
files: List<dynamic>.from(json["files"].map((x) => x)),
);
Map<String, dynamic> toMap() => {
"verified": verified,
"status": status,
"comment": comment,
"holder": holder,
"matchPercentage": matchPercentage,
"message": message,
"dob": dob,
"files": List<dynamic>.from(files.map((x) => x)),
};
}
class Gst {
Gst({
required this.verified,
required this.files,
});
bool verified;
List<dynamic> files;
factory Gst.fromMap(Map<String, dynamic> json) => Gst(
verified: json["verified"],
files: List<dynamic>.from(json["files"].map((x) => x)),
);
Map<String, dynamic> toMap() => {
"verified": verified,
"files": List<dynamic>.from(files.map((x) => x)),
};
}
class Mobile {
Mobile({
required this.verified,
required this.status,
required this.comment,
required this.number,
required this.countryCode,
required this.holder,
required this.address,
required this.email,
});
bool verified;
String status;
String comment;
String number;
String countryCode;
String holder;
String address;
String email;
factory Mobile.fromMap(Map<String, dynamic> json) => Mobile(
verified: json["verified"],
status: json["status"],
comment: json["comment"],
number: json["number"],
countryCode: json["countryCode"],
holder: json["holder"],
address: json["address"],
email: json["email"],
);
Map<String, dynamic> toMap() => {
"verified": verified,
"status": status,
"comment": comment,
"number": number,
"countryCode": countryCode,
"holder": holder,
"address": address,
"email": email,
};
}
class Pan {
Pan({
required this.verified,
required this.status,
required this.comment,
required this.holder,
required this.number,
required this.files,
});
bool verified;
String status;
String comment;
String holder;
String number;
List<dynamic> files;
factory Pan.fromMap(Map<String, dynamic> json) => Pan(
verified: json["verified"],
status: json["status"],
comment: json["comment"],
holder: json["holder"],
number: json["number"],
files: List<dynamic>.from(json["files"].map((x) => x)),
);
Map<String, dynamic> toMap() => {
"verified": verified,
"status": status,
"comment": comment,
"holder": holder,
"number": number,
"files": List<dynamic>.from(files.map((x) => x)),
};
}
class Vintage {
Vintage({
required this.status,
required this.verified,
required this.files,
});
String status;
bool verified;
List<dynamic> files;
factory Vintage.fromMap(Map<String, dynamic> json) => Vintage(
status: json["status"],
verified: json["verified"],
files: List<dynamic>.from(json["files"].map((x) => x)),
);
Map<String, dynamic> toMap() => {
"status": status,
"verified": verified,
"files": List<dynamic>.from(files.map((x) => x)),
};
}
Related
I have an api result in this format
{
"response": true,
"message": "success",
"data": {
"message": "Values fetched",
"content": [
{
"id": 5,
"name": "Car 5",
"make": "Make 5",
"created_at": "2022-06-11T12:13:48.000000Z",
"updated_at": "2022-06-11T12:13:48.000000Z"
},
{
"id": 6,
"name": "Car 6",
"make": "Make 6",
"created_at": "2022-06-11T12:13:48.000000Z",
"updated_at": "2022-06-11T12:13:48.000000Z"
}
]
}
}
I am trying to make them into a list option for smart_select package and I need to convert the result to List<Map<String, String>>
So far, I get these error Unhandled Exception: type 'List<dynamic>' is not a subtype of type 'List<Map<String, dynamic>>' and this when I hot refresh Unhandled Exception: type 'List<Map<String, dynamic>>' is not a subtype of type 'List<Map<String, String>>' and lastly Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Map<String, String>' in type cast when I change dynamic to string with this code and I don't know how to convert to List<Map<String, dynamic>>
This is my code below from api
if (response.statusCode == 200) {
List<Map<String, String>> values = (convert.jsonDecode(reply)['data']['content'] as List).map((e) => e as Map<String, dynamic>)?.toList();
}
Try to use this model
import 'dart:convert';
CarsDataModel carsDataModelFromJson(String str) => CarsDataModel.fromJson(json.decode(str));
String carsDataModelToJson(CarsDataModel data) => json.encode(data.toJson());
class CarsDataModel {
CarsDataModel({
this.response,
this.message,
this.data,
});
bool response;
String message;
Data data;
factory CarsDataModel.fromJson(Map<String, dynamic> json) => CarsDataModel(
response: json["response"],
message: json["message"],
data: Data.fromJson(json["data"]),
);
Map<String, dynamic> toJson() => {
"response": response,
"message": message,
"data": data.toJson(),
};
}
class Data {
Data({
this.message,
this.content,
});
String message;
List<Content> content;
factory Data.fromJson(Map<String, dynamic> json) => Data(
message: json["message"],
content: List<Content>.from(json["content"].map((x) => Content.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"message": message,
"content": List<dynamic>.from(content.map((x) => x.toJson())),
};
}
class Content {
Content({
this.id,
this.name,
this.make,
this.createdAt,
this.updatedAt,
});
int id;
String name;
String make;
DateTime createdAt;
DateTime updatedAt;
factory Content.fromJson(Map<String, dynamic> json) => Content(
id: json["id"],
name: json["name"],
make: json["make"],
createdAt: DateTime.parse(json["created_at"]),
updatedAt: DateTime.parse(json["updated_at"]),
);
Map<String, dynamic> toJson() => {
"id": id,
"name": name,
"make": make,
"created_at": createdAt.toIso8601String(),
"updated_at": updatedAt.toIso8601String(),
};
}
I am trying to consume data from an API. I used quicktype.io to create a model class to parse the JSON data. The JSON data contains nested maps.
Now I am getting an error
The error is [type '(dynamic) => Product' is not a subtype of type '(String, dynamic) => MapEntry<dynamic, dynamic>' of 'transform']
This is the code for API request;
Future<void> setSpecials(String restaurantId) async {
try {
final url = Uri.parse(
ENDPOINT + 'restaurant/specials?restaurantId=$restaurantId&page=0');
final response = await http.get(url);
print(response.statusCode);
if (response.statusCode == 200) {
final List<Product> specials = productFromJson(response.body);
_specialsList = specials;
}
print(_specialsList.length);
notifyListeners();
} catch (e) {
print(e.toString());
}}
This is the model
List<Product> productFromJson(String str) => List<Product>.from(json.decode(str).map((x) => Product.fromJson(x)));
String productToJson(List<Product> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class Product {
Product({
required this.id,
required this.name,
required this.image,
required this.description,
required this.isFavourite,
required this.dishes,
required this.diet,
});
String id;
String name;
String image;
String description;
bool isFavourite;
List<Dish> dishes;
String diet;
factory Product.fromJson(Map<String, dynamic> json) => Product(
id: json["_id"],
name: json["name"],
image: json["image"],
description: json["description"],
isFavourite: json["isFavourite"],
dishes: List<Dish>.from(json["dishes"].map((x) => Dish.fromJson(x))),
diet: json["diet"] == null ? null : json["diet"],
);
Map<String, dynamic> toJson() => {
"_id": id,
"name": name,
"image": image,
"description": description,
"isFavourite": isFavourite,
"dishes": List<dynamic>.from(dishes.map((x) => x.toJson())),
"diet": diet == null ? null : diet,
};
}
class Dish {
Dish({
required this.name,
required this.price,
required this.offerIds,
required this.id,
});
String name;
double price;
List<dynamic> offerIds;
String id;
factory Dish.fromJson(Map<String, dynamic> json) => Dish(
name: json["name"],
price: double.parse(json["price"].toString()),
offerIds: List<dynamic>.from(json["offerIds"].map((x) => x)),
id: json["_id"],
);
Map<String, dynamic> toJson() => {
"name": name,
"price": price,
"offerIds": List<dynamic>.from(offerIds.map((x) => x)),
"_id": id,
};
}
The JSON data is
[
{
"_id": "60edb147d91f7820c80585c9",
"name": "Chicken Biriyani",
"image": "localhost:3031\\images\\1626190484369-chicken-Biryani.jpg",
"description": "Chicken, Motton",
"isFavourite": false,
"dishes": [
{
"name": "Full",
"price": 200,
"offerIds": [],
"_id": "610e1cd618319924b45ef9cd"
},
{
"name": "Half",
"price": 150,
"offerIds": [],
"_id": "610e1cd618319924b45ef9ce"
},
{
"name": "Quarter",
"price": 100,
"offerIds": [],
"_id": "610e1cd618319924b45ef9cf"
}
]
},
{
"_id": "610cb83c231052429899df76",
"name": "Shavrma",
"image": "157.245.96.189:3031/images/1632371901688-IMG-20210922-WA0123.jpg",
"description": "Chicken Shavrma",
"diet": "Veg",
"isFavourite": false,
"dishes": [
{
"name": "Plate",
"price": 80,
"offerIds": [],
"_id": "610cb83c231052429899df77"
},
{
"name": "Roll",
"price": 60,
"offerIds": [],
"_id": "610cb83c231052429899df78"
}
]
}
]
I am tried to display data in listview.
I have Json Response as below.
[
{
"success": 1,
"subject": [
{
"subject_id": "5e32874c714fa",
"subject_name": "Account",
"image": "upload/subject/Account.png",
"active": "1",
"standard_id": "5d1594e283e1a",
"medium_id": "5d15938aa1344"
},
{
"subject_id": "5da9ff659fb7c",
"subject_name": "Biology",
"image": "upload/subject/03_logo-1164x484.png",
"active": "1",
"standard_id": "5d1594e283e1a",
"medium_id": "5d15938aa1344"
},
{
"subject_id": "5da9ff990b1c6",
"subject_name": "Chemisty",
"image": "upload/subject/02_logo-1168x490.png",
"active": "1",
"standard_id": "5d1594e283e1a",
"medium_id": "5d15938aa1344"
},
{
"subject_id": "5de76afbd064e",
"subject_name": "Computer",
"image": "upload/subject/07_logo-1169x486.png",
"active": "1",
"standard_id": "5d1594e283e1a",
"medium_id": "5d15938aa1344"
},
{
"subject_id": "5d788906c431b",
"subject_name": "Devsatya Paperset March 2020",
"image": "upload/subject/04_logo-1174x491.png",
"active": "1",
"standard_id": "5d1594e283e1a",
"medium_id": "5d15938aa1344"
}
]
}
]
as above response i create a model class as below
// To parse this JSON data, do
//
// final subjectByUser = subjectByUserFromJson(jsonString);
import 'dart:convert';
List<SubjectByUser> subjectByUserFromJson(String str) =>
List<SubjectByUser>.from(
json.decode(str).map((x) => SubjectByUser.fromJson(x)));
String subjectByUserToJson(List<SubjectByUser> data) =>
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
class SubjectByUser {
SubjectByUser({
required this.success,
required this.subject,
});
int success;
List<Subject> subject;
factory SubjectByUser.fromJson(Map<String, dynamic> json) => SubjectByUser(
success: json["success"],
subject:
List<Subject>.from(json["subject"].map((x) => Subject.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"success": success,
"subject": List<dynamic>.from(subject.map((x) => x.toJson())),
};
}
class Subject {
Subject({
required this.subjectId,
required this.subjectName,
required this.image,
required this.active,
required this.standardId,
required this.mediumId,
});
String subjectId;
String subjectName;
String image;
String active;
String standardId;
String mediumId;
factory Subject.fromJson(Map<String, dynamic> json) => Subject(
subjectId: json["subject_id"],
subjectName: json["subject_name"],
image: json["image"],
active: json["active"],
standardId: json["standard_id"],
mediumId: json["medium_id"],
);
Map<String, dynamic> toJson() => {
"subject_id": subjectId,
"subject_name": subjectName,
"image": image,
"active": active,
"standard_id": standardId,
"medium_id": mediumId,
};
}
I write below code, now how can i display subjects data like subjectName, image, etc in list view?
in print i can get the subject name on index 3.
Future getUserSubject(List subject) async {
final subjectUrl =
"$baseUrl/subject/get_by_user_plan?user_id=609cab2cd5b6c&order_id=1620889722609cd07a601af469889697609cab2cd5b6c&standard_id=5d1594e283e1a&medium_id=5d15938aa1344";
final response = await http.get(Uri.parse(subjectUrl));
final subjects = response.body;
final decodedData = jsonDecode(subjects);
SubjectByUserModel subjectByUserModel =
SubjectByUserModel.fromJson(decodedData);
print(subjectByUserModel.subject?[2].subjectName);
}
I put all codes in separate file also view
You can use ListView.builder
ListView.builder(
itemCount: subjectByUserModel.subject ?? 0,
itemBuilder: (BuildContext context, int index) {
print(subjectByUserModel.subject?[index].subjectName);
print(subjectByUserModel.subject?[index].standardId); // so on
// Now you can build any widget for per subject.
// like card, listTile or simple text.
return Text('');
});
I am trying to get data from a local API into my project, i am facing the following problem:
Unhandled Exception: type 'List' is not a subtype of type 'Map<String, dynamic>'
// To parse this JSON data, do
//
// final toDo = toDoFromJson(jsonString);
import 'dart:convert';
import 'package:http/http.dart' as http;
ToDo toDoFromJson(String str) => ToDo.fromJson(json.decode(str));
String toDoToJson(ToDo data) => json.encode(data.toJson());
class ToDo {
ToDo({
required this.id,
required this.img,
required this.name,
required this.title,
required this.done,
required this.note,
required this.priority,
required this.dueDate,
required this.taskOwner,
required this.studentId,
required this.createdAt,
required this.updatedAt,
});
int id;
String img;
String name;
String title;
int done;
String note;
String priority;
String dueDate;
int taskOwner;
String studentId;
String createdAt;
String updatedAt;
factory ToDo.fromJson(Map<String, dynamic> json) => ToDo(
id: json["id"],
img: json["img"],
name: json["name"],
title: json["title"],
done: json["done"],
note: json["note"],
priority: json["priority"],
dueDate: json["due_date"],
taskOwner: json["TaskOwner"],
studentId: json["studentId"],
createdAt: json["createdAt"],
updatedAt: json["updatedAt"],
);
Map<String, dynamic> toJson() => {
"id": id,
"img": img,
"name": name,
"title": title,
"done": done,
"note": note,
"priority": priority,
"due_date": dueDate,
"TaskOwner": taskOwner,
"studentId": studentId,
"createdAt": createdAt,
"updatedAt": updatedAt,
};
}
Future<List<ToDo>> fetchTodos() async {
final response =
await http.get(Uri.parse('http://localhost:3000/task/all/1'));
if (response.statusCode == 200) {
final List<ToDo> todo = toDoFromJson(response.body) as List<ToDo>;
print(todo);
return todo;
} else {
print("nothing found");
return [];
}
}
Json from API is as below:
{
"id": 1,
"img": "assets/images/user/user1.jpg",
"name": "task 1",
"title": "eee",
"done": 0,
"note": "eee",
"priority": "Normal",
"due_date": "2021-07-06T18:30:00.000Z",
"TaskOwner": 1,
"studentId": "2",
"createdAt": "2021-07-26T14:39:54.000Z",
"updatedAt": "2021-07-26T14:39:54.000Z"
},
{
"id": 2,
"img": "assets/images/user/user1.jpg",
"name": "task 2",
"title": "nnjn",
"done": 0,
"note": "2525",
"priority": "High",
"due_date": "2021-07-19T18:30:00.000Z",
"TaskOwner": 1,
"studentId": "7",
"createdAt": "2021-07-27T15:05:31.000Z",
"updatedAt": "2021-07-27T15:05:31.000Z"
},
{
"id": 3,
"img": "assets/images/user/user1.jpg",
"name": "task 3",
"title": "5255",
"done": 0,
"note": "55",
"priority": "Normal",
"due_date": "2021-07-21T18:30:00.000Z",
"TaskOwner": 1,
"studentId": "7",
"createdAt": "2021-07-27T15:05:48.000Z",
"updatedAt": "2021-07-27T15:05:48.000Z"
},
{
"id": 4,
"img": "assets/images/user/user1.jpg",
"name": "task 4",
"title": "kaam kro",
"done": 0,
"note": "test note",
"priority": "Normal",
"due_date": "2021-07-21T18:30:00.000Z",
"TaskOwner": 1,
"studentId": "2",
"createdAt": "2021-08-04T14:45:47.000Z",
"updatedAt": "2021-08-04T14:45:47.000Z"
},
The method you are using to parse todos will return a ToDo object casted to a List<ToDo> which will cause an exception!
What you have to do is converting every single map in json to ToDo and then create a List from them.
Here is what you need to do:
replace this line
final List<ToDo> todo = toDoFromJson(response.body) as List<ToDo>;
with this:
final List<ToDo> todo = List<ToDo>.from(response.body.map((x) => toDoFromJson(x)))
fixed this by adding for loop to the Future function, refer to the code below -
Future<List<ToDo>> fetchTodos() async {
List<ToDo> todos = [];
final response =
await http.get(Uri.parse('https://dhulltransport.com:20625/task/all/1'));
if (response.statusCode == 200) {
var jsonList = jsonDecode(response.body);
for (var t in jsonList) {
todos.add(ToDo.fromJson(t));
}
print(todos.length);
return todos;
} else {
return [];
}
}
I have an issue parsing my jsonData in flutter. This is my json.
{
"status": "success",
"data": [
{
"id": "02ab1ef0-6fa9-11ea-ba0f-b1d475e9cef4",
"policy_name": "Third Party Insurance",
"description": "This is Third Party Insurance",
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 21:30:27",
"updated_at": "2020-03-26 21:30:27",
"insurance_policy_type": [
{
"id": "3c674550-6faa-11ea-b97c-9d7c2598dab0",
"insurance_policy_id": "02ab1ef0-6fa9-11ea-ba0f-b1d475e9cef4",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Third Party - Grade A",
"description": "Third Party - Grade A. Third Party - Grade A. Third Party - Grade A",
"benefit": "Benefit of Third Party - Grade A. This is going to be a long text",
"amount": 5000,
"commission": 300,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 21:39:13",
"updated_at": "2020-03-26 21:39:13"
},
{
"id": "4ec7a4a0-6faa-11ea-9739-77f0ed3fc12c",
"insurance_policy_id": "02ab1ef0-6fa9-11ea-ba0f-b1d475e9cef4",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Third Party - Grade B",
"description": "Third Party - Grade B. Third Party - Grade B. Third Party - Grade B",
"benefit": "Benefit of Third Party - Grade B. This is going to be a long text",
"amount": 8000,
"commission": 500,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 21:39:44",
"updated_at": "2020-03-26 21:39:44"
}
]
},
{
"id": "10e31df0-6fa9-11ea-962f-e5df8d00bea3",
"policy_name": "Personal Accident Insurance",
"description": "This is Personal Accident Insurance",
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 21:30:51",
"updated_at": "2020-03-26 21:30:51",
"insurance_policy_type": [
{
"id": "aaf3ef10-6fb2-11ea-8c17-8de2cd67bf64",
"insurance_policy_id": "10e31df0-6fa9-11ea-962f-e5df8d00bea3",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Personal Accident - Grade A",
"description": "Personal Accident - Grade A. Personal Accident - Grade A. Personal Accident - Grade A",
"benefit": "Benefit of Personal Accident - Grade A. This is going to be a long text",
"amount": 4000,
"commission": 500,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 22:39:35",
"updated_at": "2020-03-26 22:39:35"
},
{
"id": "b4835d00-6fb2-11ea-a48f-c3481acd8970",
"insurance_policy_id": "10e31df0-6fa9-11ea-962f-e5df8d00bea3",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Personal Accident - Grade B",
"description": "Personal Accident - Grade B. Personal Accident - Grade B. Personal Accident - Grade B",
"benefit": "Benefit of Personal Accident - Grade B. This is going to be a long text",
"amount": 4000,
"commission": 500,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 22:39:51",
"updated_at": "2020-03-26 22:39:51"
},
{
"id": "c6d84e60-6fb2-11ea-a773-497e66c9ab29",
"insurance_policy_id": "10e31df0-6fa9-11ea-962f-e5df8d00bea3",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Personal Accident - Grade C",
"description": "Personal Accident - Grade C. Personal Accident - Grade C. Personal Accident - Grade C",
"benefit": "Benefit of Personal Accident - Grade C. This is going to be a long text",
"amount": 10000,
"commission": 1000,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 22:40:21",
"updated_at": "2020-03-26 22:40:21"
}
]
},
{
"id": "1a727fc0-6fa9-11ea-a43f-b52dc75efa00",
"policy_name": "Household Insurance",
"description": "This is Household Insurance",
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 21:31:07",
"updated_at": "2020-03-26 21:34:17",
"insurance_policy_type": [
{
"id": "016fa680-6fb3-11ea-93b7-3fdae3d5875a",
"insurance_policy_id": "1a727fc0-6fa9-11ea-a43f-b52dc75efa00",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Household Insurance - Grade D",
"description": "Household Insurance - Grade D. Household Insurance - Grade D. Household Insurance - Grade D",
"benefit": "Benefit of Household Insurance - Grade D. This is going to be a long text",
"amount": 9000,
"commission": 1000,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 22:42:00",
"updated_at": "2020-03-26 22:42:00"
},
{
"id": "13a62720-6fb3-11ea-8842-ed9732bb7c86",
"insurance_policy_id": "1a727fc0-6fa9-11ea-a43f-b52dc75efa00",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Household Insurance - Grade K",
"description": "Household Insurance - Grade K. Household Insurance - Grade K. Household Insurance - Grade K",
"benefit": "Benefit of Household Insurance - Grade K. This is going to be a long text",
"amount": 7500,
"commission": 600,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 22:42:30",
"updated_at": "2020-03-26 22:42:30"
},
{
"id": "f4ceb490-6fb2-11ea-9b04-a1229a2e2128",
"insurance_policy_id": "1a727fc0-6fa9-11ea-a43f-b52dc75efa00",
"insurance_company_id": "07a53f10-6fa8-11ea-bb6d-89fb742a644e",
"policy_type_name": "Household Insurance - Grade C",
"description": "Household Insurance - Grade C. Household Insurance - Grade C. Household Insurance - Grade C",
"benefit": "Benefit of Household Insurance - Grade C. This is going to be a long text",
"amount": 9000,
"commission": 1000,
"status": 1,
"deleted_at": null,
"created_at": "2020-03-26 22:41:39",
"updated_at": "2020-03-26 22:41:39"
}
]
}
]
}
I have generated a model for this data which works perfectly.
class Insurance {
String status;
List<Data> data;
Insurance({this.status, this.data});
Insurance.fromJson(Map<String, dynamic> json) {
status = json['status'];
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>();
data['status'] = this.status;
if (this.data != null) {
data['data'] = this.data.map((v) => v.toJson()).toList();
}
return data;
}
}
class Data {
String id;
String policyName;
String description;
int status;
var deletedAt;
String createdAt;
String updatedAt;
List<InsurancePolicyType> insurancePolicyType;
Data(
{this.id,
this.policyName,
this.description,
this.status,
this.deletedAt,
this.createdAt,
this.updatedAt,
this.insurancePolicyType});
Data.fromJson(Map<String, dynamic> json) {
id = json['id'];
policyName = json['policy_name'];
description = json['description'];
status = json['status'];
deletedAt = json['deleted_at'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
if (json['insurance_policy_type'] != null) {
insurancePolicyType = new List<InsurancePolicyType>();
json['insurance_policy_type'].forEach((v) {
insurancePolicyType.add(new InsurancePolicyType.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['policy_name'] = this.policyName;
data['description'] = this.description;
data['status'] = this.status;
data['deleted_at'] = this.deletedAt;
data['created_at'] = this.createdAt;
data['updated_at'] = this.updatedAt;
if (this.insurancePolicyType != null) {
data['insurance_policy_type'] =
this.insurancePolicyType.map((v) => v.toJson()).toList();
}
return data;
}
}
class InsurancePolicyType {
String id;
String insurancePolicyId;
String insuranceCompanyId;
String policyTypeName;
String description;
String benefit;
int amount;
int commission;
int status;
Null deletedAt;
String createdAt;
String updatedAt;
InsurancePolicyType(
{this.id,
this.insurancePolicyId,
this.insuranceCompanyId,
this.policyTypeName,
this.description,
this.benefit,
this.amount,
this.commission,
this.status,
this.deletedAt,
this.createdAt,
this.updatedAt});
InsurancePolicyType.fromJson(Map<String, dynamic> json) {
id = json['id'];
insurancePolicyId = json['insurance_policy_id'];
insuranceCompanyId = json['insurance_company_id'];
policyTypeName = json['policy_type_name'];
description = json['description'];
benefit = json['benefit'];
amount = json['amount'];
commission = json['commission'];
status = json['status'];
deletedAt = json['deleted_at'];
createdAt = json['created_at'];
updatedAt = json['updated_at'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['insurance_policy_id'] = this.insurancePolicyId;
data['insurance_company_id'] = this.insuranceCompanyId;
data['policy_type_name'] = this.policyTypeName;
data['description'] = this.description;
data['benefit'] = this.benefit;
data['amount'] = this.amount;
data['commission'] = this.commission;
data['status'] = this.status;
data['deleted_at'] = this.deletedAt;
data['created_at'] = this.createdAt;
data['updated_at'] = this.updatedAt;
return data;
}
}
Main.dart
List<InsurancePolicyType> insurancePolicyType;
List<Data> insuranceDataList = [];
...
insuranceDataList = List<Data>.from(
responseJson["data"].map((i) => Data.fromJson(i)));
for (var i = 0; i < insuranceDataList.length; i++) {
insurancePolicyType = List<InsurancePolicyType>.from(
responseJson["data"][i]["insurance_policy_type"].map((i) =>InsurancePolicyType.fromJson(i)));
So inside every index is another list which i need to save inside the InsurancePolicyType object. Thats the data am trying to fetch.
How do i fetch List<InsurancePolicyType> insurancePolicyType in my code? I need to fetch that list but i have not been able to.
Writing getter should be fine in this case
class Insurance {
String status;
List<Data> data;
List<InsurancePolicyType> get getAllInsurancePolicies {
List<InsurancePolicyType> fetchedList = List();
for (var d in data) {
fetchedList.addAll(d.insurancePolicyType);
}
return fetchedList;
}
Insurance({this.status, this.data});
Insurance.fromJson(Map<String, dynamic> json) {
status = json['status'];
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>();
data['status'] = this.status;
if (this.data != null) {
data['data'] = this.data.map((v) => v.toJson()).toList();
}
return data;
}
}
Without changing anything in your models. The following solution will work:
List<InsurancePolicyType> insurancePolicyType;
List<Data> insuranceDataList;
insuranceDataList =
List<Data>.from(responseJson["data"].map((i) => Data.fromJson(i)));
insurancePolicyType = insuranceDataList
.map((insuranceData) => insuranceData.insurancePolicyType)
.expand((type) => type)
.toList();
Once you have deserialized the json data, it is easier to use the resultant objects to retrieve the insurance policy types you want.
This solution gets all the policy types from each Data object and then flattens that list to get the desired list of policy types.
Please check out this model class and directly use it. Firstly you get the complete object using this call :
final insurance = insuranceFromJson(jsonString);
Later extract the list of data from the object using the
following:
I will show you step by step:
List<YourObejct(I have used the Datum as a name)> data =List();
later pass the response.body to the below method:
final insurance = insuranceFromJson(response.body);
Here you get your complete Insurance object just extract the data Object using the following:
data = insurance.data;
and Later Do your desired Stuff, I have mentioned the model class below depending on your JSON you provided.
// To parse this JSON data, do
//
// final insurance = insuranceFromJson(jsonString);
import 'dart:convert';
Insurance insuranceFromJson(String str) => Insurance.fromJson(json.decode(str));
String insuranceToJson(Insurance data) => json.encode(data.toJson());
class Insurance {
String status;
List<Datum> data;
Insurance({
this.status,
this.data,
});
factory Insurance.fromJson(Map<String, dynamic> json) => Insurance(
status: json["status"],
data: List<Datum>.from(json["data"].map((x) => Datum.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"status": status,
"data": List<dynamic>.from(data.map((x) => x.toJson())),
};
}
class Datum {
String id;
String policyName;
String description;
int status;
dynamic deletedAt;
DateTime createdAt;
DateTime updatedAt;
List<InsurancePolicyType> insurancePolicyType;
Datum({
this.id,
this.policyName,
this.description,
this.status,
this.deletedAt,
this.createdAt,
this.updatedAt,
this.insurancePolicyType,
});
factory Datum.fromJson(Map<String, dynamic> json) => Datum(
id: json["id"],
policyName: json["policy_name"],
description: json["description"],
status: json["status"],
deletedAt: json["deleted_at"],
createdAt: DateTime.parse(json["created_at"]),
updatedAt: DateTime.parse(json["updated_at"]),
insurancePolicyType: List<InsurancePolicyType>.from(json["insurance_policy_type"].map((x) => InsurancePolicyType.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"id": id,
"policy_name": policyName,
"description": description,
"status": status,
"deleted_at": deletedAt,
"created_at": createdAt.toIso8601String(),
"updated_at": updatedAt.toIso8601String(),
"insurance_policy_type": List<dynamic>.from(insurancePolicyType.map((x) => x.toJson())),
};
}
class InsurancePolicyType {
String id;
String insurancePolicyId;
String insuranceCompanyId;
String policyTypeName;
String description;
String benefit;
int amount;
int commission;
int status;
dynamic deletedAt;
DateTime createdAt;
DateTime updatedAt;
InsurancePolicyType({
this.id,
this.insurancePolicyId,
this.insuranceCompanyId,
this.policyTypeName,
this.description,
this.benefit,
this.amount,
this.commission,
this.status,
this.deletedAt,
this.createdAt,
this.updatedAt,
});
factory InsurancePolicyType.fromJson(Map<String, dynamic> json) => InsurancePolicyType(
id: json["id"],
insurancePolicyId: json["insurance_policy_id"],
insuranceCompanyId: json["insurance_company_id"],
policyTypeName: json["policy_type_name"],
description: json["description"],
benefit: json["benefit"],
amount: json["amount"],
commission: json["commission"],
status: json["status"],
deletedAt: json["deleted_at"],
createdAt: DateTime.parse(json["created_at"]),
updatedAt: DateTime.parse(json["updated_at"]),
);
Map<String, dynamic> toJson() => {
"id": id,
"insurance_policy_id": insurancePolicyId,
"insurance_company_id": insuranceCompanyId,
"policy_type_name": policyTypeName,
"description": description,
"benefit": benefit,
"amount": amount,
"commission": commission,
"status": status,
"deleted_at": deletedAt,
"created_at": createdAt.toIso8601String(),
"updated_at": updatedAt.toIso8601String(),
};
}