如何在 Flutter 中将字符串转换为对象?
How to convert a String to Object in Flutter?
我有两个模型 类 Employee 和 AdditionalDetails
class Employee{
AdditionalDetails(this.uuid, this.additional_details);
String uuid;
String additional_details;
}
class AdditionalDetails{
AdditionalDetails(this.start, this.end, this.month);
String start;
String end;
String month;
}
And I have a handler in which I am creating objects of AdditionalDetails and pushing into a list.
List<Employee> list = new List<Employee>;
String add1 = AdditionalDetails("start1", "end1", "dec").toString();
String add2 = AdditionalDetails("start2", "end2", "jan").toString();
list.add(1, add1);
list.add(2, add2);
我在列表中显示这些项目,在单击每个项目时,我必须在对话框中显示其他详细信息。
我可以通过遍历列表来获取 uuid,但是在执行 json.decode(additional_details) 时,它给出了这个:
SyntaxError: Unexpected token I in JSON at position 0
如何从 additionalDetails 中获取开始、结束和月份属性?
我想这就是你想要的。
class Employee {
Employee(this.uuid, this.additionalDetails);
String uuid;
String additionalDetails;
}
class AdditionalDetails {
AdditionalDetails(
this.start,
this.end,
this.month,
);
final String start;
final String end;
final String month;
@override
String toString() => '$start $end $month';
}
final list = <Employee>[];
final add1 = AdditionalDetails("start1", "end1", "dec").toString();
final add2 = AdditionalDetails("start2", "end2", "jan").toString();
list.add(Employee('1', add1));
list.add(Employee('2', add2));
更酷的方式:
class Employee {
Employee({
@required this.uuid,
@required this.additionalDetails,
});
final String uuid;
final AdditionalDetails additionalDetails;
factory Employee.fromJson(Map<String, dynamic> json) => Employee(
uuid: json["uuid"],
additionalDetails: json["additionalDetails"],
);
Map<String, dynamic> toJson() => {
"uuid": uuid,
"additionalDetails": additionalDetails.toJson(),
};
}
class AdditionalDetails {
AdditionalDetails({
@required this.start,
@required this.end,
@required this.month,
});
final String start;
final String end;
final String month;
factory AdditionalDetails.fromJson(Map<String, dynamic> json) =>
AdditionalDetails(
start: json["start"],
end: json["end"],
month: json["month"],
);
Map<String, dynamic> toJson() => {
"start": start,
"end": end,
"month": month,
};
}
final list = <Employee>[];
final add1 = AdditionalDetails(start: "start1", end: "end1", month: "dec");
list.add(Employee(uuid: '1', additionalDetails: add1));
final json = add1.toJson(); // Map<String, dynamic>
final startFromJson = json['start'];
final object = AdditionalDetails.fromJson(json); // AdditionalDetails
final startFromObject = object.start;
如果你想用字符串而不是 jsondecode 创建一个对象,你应该使用 toJson 和 fromJson 函数:
class AdditionalDetails{
AdditionalDetails(this.start, this.end, this.month);
String start;
String end;
String month;
AdditionalDetails.fromJson(Map<String, dynamic> json){
this.start = json['start'];
this.end = json['end'];
this.month = json['month'];
}
Map<String, dynamic> toJson(){
Map<String, dynamic> data = {};
data['start'] = this.start;
data['end'] = this.end;
data['month'] = this.month;
return data;
}
}
List<Employee> list = new List<Employee>;
String add1 = AdditionalDetails("start1", "end1", "dec").toJson();
String add2 = AdditionalDetails("start2", "end2", "jan").toJson();
list.add(1, add1);
list.add(2, add2);
final object = AdditionalDetails.fromJson(add1);
我有两个模型 类 Employee 和 AdditionalDetails
class Employee{
AdditionalDetails(this.uuid, this.additional_details);
String uuid;
String additional_details;
}
class AdditionalDetails{
AdditionalDetails(this.start, this.end, this.month);
String start;
String end;
String month;
}
And I have a handler in which I am creating objects of AdditionalDetails and pushing into a list.
List<Employee> list = new List<Employee>;
String add1 = AdditionalDetails("start1", "end1", "dec").toString();
String add2 = AdditionalDetails("start2", "end2", "jan").toString();
list.add(1, add1);
list.add(2, add2);
我在列表中显示这些项目,在单击每个项目时,我必须在对话框中显示其他详细信息。
我可以通过遍历列表来获取 uuid,但是在执行 json.decode(additional_details) 时,它给出了这个:
SyntaxError: Unexpected token I in JSON at position 0
如何从 additionalDetails 中获取开始、结束和月份属性?
我想这就是你想要的。
class Employee {
Employee(this.uuid, this.additionalDetails);
String uuid;
String additionalDetails;
}
class AdditionalDetails {
AdditionalDetails(
this.start,
this.end,
this.month,
);
final String start;
final String end;
final String month;
@override
String toString() => '$start $end $month';
}
final list = <Employee>[];
final add1 = AdditionalDetails("start1", "end1", "dec").toString();
final add2 = AdditionalDetails("start2", "end2", "jan").toString();
list.add(Employee('1', add1));
list.add(Employee('2', add2));
更酷的方式:
class Employee {
Employee({
@required this.uuid,
@required this.additionalDetails,
});
final String uuid;
final AdditionalDetails additionalDetails;
factory Employee.fromJson(Map<String, dynamic> json) => Employee(
uuid: json["uuid"],
additionalDetails: json["additionalDetails"],
);
Map<String, dynamic> toJson() => {
"uuid": uuid,
"additionalDetails": additionalDetails.toJson(),
};
}
class AdditionalDetails {
AdditionalDetails({
@required this.start,
@required this.end,
@required this.month,
});
final String start;
final String end;
final String month;
factory AdditionalDetails.fromJson(Map<String, dynamic> json) =>
AdditionalDetails(
start: json["start"],
end: json["end"],
month: json["month"],
);
Map<String, dynamic> toJson() => {
"start": start,
"end": end,
"month": month,
};
}
final list = <Employee>[];
final add1 = AdditionalDetails(start: "start1", end: "end1", month: "dec");
list.add(Employee(uuid: '1', additionalDetails: add1));
final json = add1.toJson(); // Map<String, dynamic>
final startFromJson = json['start'];
final object = AdditionalDetails.fromJson(json); // AdditionalDetails
final startFromObject = object.start;
如果你想用字符串而不是 jsondecode 创建一个对象,你应该使用 toJson 和 fromJson 函数:
class AdditionalDetails{
AdditionalDetails(this.start, this.end, this.month);
String start;
String end;
String month;
AdditionalDetails.fromJson(Map<String, dynamic> json){
this.start = json['start'];
this.end = json['end'];
this.month = json['month'];
}
Map<String, dynamic> toJson(){
Map<String, dynamic> data = {};
data['start'] = this.start;
data['end'] = this.end;
data['month'] = this.month;
return data;
}
}
List<Employee> list = new List<Employee>;
String add1 = AdditionalDetails("start1", "end1", "dec").toJson();
String add2 = AdditionalDetails("start2", "end2", "jan").toJson();
list.add(1, add1);
list.add(2, add2);
final object = AdditionalDetails.fromJson(add1);