如何从包含数组数组的JSON中获取数据到flutter中的对象



我得到的json看起来像这样:

{"-N42h_BKjWaEZRJyH8vS":[{"Data":"06/2022","imie":"John","DayList":[["7.50","12.00"],["00.00","00.00"],["8.00","16.00"],["00.00","00.00"],["00.00","00.00"],["7.50","15.00"],["00.00","00.00"],["00.00","00.00"],["00.00","00.00"],["8.00","15.25"],["00.00","00.00"],["00.00","00.00"],["7.50","15.00"],["00.00","00.00"]],"surname":"Smith"}]}

在"DayList"表示单独的工作日。例:["7.50","12.00"]只是在说,工作时间从7:30开始,12点结束。每一天的指数也代表一个月中的某一天,例如指数0是01/06/2022,指数1是02/06/2022,以此类推。整个名单附属于一个人,在这种情况下,约翰·史密斯。

My Day模型是这样的:

class Day {
String name;
DateTime dateTime;
double startTime;
double endTime;
Day({
required this.name,
required this.dateTime,
required this.startTime,
required this.endTime,
});
}

任何人都有一个想法如何创建基于这个json对象列表?也许有更好的方法来创建这样的json?

class DayDatum {
DayDatum({
this.data,
this.imie,
this.dayList,
this.surname,
});
String data;
String imie;
List<List<String>> dayList;
String surname;
factory DayDatum.fromJson(Map<String, dynamic> json) => DayDatum(
data: json["Data"],
imie: json["imie"],
dayList: List<List<String>>.from(json["DayList"].map((x) => List<String>.from(x.map((x) => x)))),
surname: json["surname"],
);
Map<String, dynamic> toJson() => {
"Data": data,
"imie": imie,
"DayList": List<dynamic>.from(dayList.map((x) => List<dynamic>.from(x.map((x) => x)))),
"surname": surname,
};
}

你可以使用这个模型来解析每个对象的数据

import 'dart:convert';
Data dataFromJson(String str) => Data.fromJson(json.decode(str));
String dataToJson(Data data) => json.encode(data.toJson());
class Data {
Data({
this.listOfDays,
});
List<personalInfo>? listOfDays;
factory Data.fromJson(Map<String, dynamic> json) => Data(
listOfDays: List<personalInfo>.from(json["-N42h_BKjWaEZRJyH8vS"]
.map((x) => personalInfo.fromJson(x))),
);
Map<String, dynamic> toJson() => {
"-N42h_BKjWaEZRJyH8vS":
List<dynamic>.from(listOfDays!.map((x) => x.toJson())),
};
}
class personalInfo {
personalInfo({
this.data,
this.imie,
this.dayList,
this.surname,
});
String? data;
String? imie;
List<List<String>>? dayList;
String? surname;
factory personalInfo.fromJson(Map<String, dynamic> json) =>
personalInfo(
data: json["Data"],
imie: json["imie"],
dayList: List<List<String>>.from(
json["DayList"].map((x) => List<String>.from(x.map((x) => x)))),
surname: json["surname"],
);
Map<String, dynamic> toJson() => {
"Data": data,
"imie": imie,
"DayList": List<dynamic>.from(
dayList!.map((x) => List<dynamic>.from(x.map((x) => x)))),
"surname": surname,
};
}

你也可以使用这个站点直接创建模型

最新更新