#json #flutter #dictionary #dart #encoding
#json #flutter #словарь #dart #кодирование
Вопрос:
Мне удалось декодировать словарь JSON, но как я могу сделать обратное — кодирование?
class Achievements {
Achievements({this.skills});
var skills = Map<String, SkillHist>();
// ==================================================ENCODING DICTIONARY
factory Achievements.fromJson(Map<String, dynamic> json) {
var innerMap = json['skills'];
var skillMap = Map<String, SkillHist>();
innerMap.forEach((key, value) {
skillMap.addAll({key: SkillHist.fromJson(value)});
});
return Achievements(
skills: skillMap,
);
}
// ==================================================DECODING DICTIONARY
Map<String, dynamic> toJson() => {
"skills": skills == null ? null : Map // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
};
}
class SkillHist {
SkillHist({this.currentSkill, this.skillLevel, this.skillEarnedDate});
final int currentSkill;
final List<int> skillLevel;
final List<DateTime> skillEarnedDate;
factory SkillHist.fromJson(Map<String, dynamic> json) {
return SkillHist(
currentSkill: json["currentSkill"] == null ? null : json['currentSkill'],
skillLevel: json["skillLevel"] == null ? null : List<int>.from(json["skillLevel"].map((x) => x)),
skillEarnedDate: json["skillEarnedDate"] == null ? null : List<DateTime>.from(json["skillEarnedDate"].map((x) => x)),
);
}
Map<String, dynamic> toJson() => {
"currentSkill": currentSkill == null ? null : currentSkill,
"skillLevel": skillLevel == null ? null : List<int>.from(skillLevel.map((x) => x)),
"skillEarnedDate": skillEarnedDate == null ? null : List<DateTime>.from(skillEarnedDate.map((x) => x)),
};
}
Имея в виду эту проблему, я также начал задаваться вопросом, как я реализовал декодирование списка, который я скопировал из какого-то фрагмента несколько месяцев назад.
Почему я использую
"skillEarnedDate": List<DateTime>.from(skillEarnedDate.map((x) => x)),
и не просто
"skillEarnedDate": skillEarnedDate,
skillEarnedDate
список уже есть, так почему я должен инициировать новый?