Flutter / Dart Json Serialization
Oct 21 2020
ฉันยังใหม่กับทั้ง Flutter และ Dart และพยายามแปลงแอปพลิเคชั่น android studio ให้ใช้ flutter ถ้าทำได้ ฉันกำลังพยายามแยกวิเคราะห์ json แบบง่ายๆเพื่อเรียนรู้ว่าคุณสมบัติโผ / กระพือทั้งหมดสามารถช่วยฉันได้อย่างไร
โครงสร้างชั้นเรียนที่ฉันต้องการเขียนคือ:
class Company extends Salinas {
final String name;
Company({this.name}) : super();
factory Company.fromJson(Map<String, dynamic> json) => _$CompanyFromJson(json); Map<String, dynamic> toJson() => _$CompanyToJson(this);
}
class Salinas {
final int id;
Salinas({this.id});
factory Salinas.fromJson(Map<String, dynamic> json) => _$SalinasFromJson(json); Map<String, dynamic> toJson() => _$SalinasToJson(this);
}
สตริง json นั้นเรียบง่าย
{"id":1,"name":"Acme"}
และ:
print(company.id)is null
print(company.name) is Acme;
เมื่อฉันดูไฟล์ Company.g.dart ไม่มีการอ้างอิงถึงคลาสเสริม Salinas? มีวิธีทำไหม
ฉันขาดอะไรไปอย่างชัดเจน
คำตอบ
1 Akif Oct 21 2020 at 03:03
คุณต้องกำหนดคุณสมบัติของคลาสเพิ่มเติมในตัวสร้างลูกเช่นนี้:
class Company extends Salinas {
final String name;
Company({id, this.name}) : super(id: id);
}
หลังจากที่คุณจะเห็นผลลัพธ์นี้:
print(company.id) is 1
print(company.name) is Acme;
1 DarshShah Oct 21 2020 at 16:09
class Company {
int id;
String name;
Company({this.id, this.name});
Company.fromJson(Map<String, dynamic> json) {
id = json['id'];
name = json['name'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['name'] = this.name;
return data;
}
}
บนพื้นฐานของ JSON ที่คุณให้ไว้คุณควรสร้าง Model ตามด้านบน หลังจากนั้นคุณสามารถทำแผนที่ทั้งหมดได้อย่างสะดวก
Company company = Company.fromJson(response);
จากนั้นคุณมีอิสระที่จะพิมพ์
print(company.id);
print(company.name);