#flutter
Вопрос:
Я попробовал tojson во флаттере, но я получаю следующую ошибку:
[VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: type 'List<Tag>' is not a subtype of type 'String' in type cast
это мой код
import 'package:flutter_traveling/model/Tag.dart';
class Diary {
String? title;
String? location;
String? address;
List<Tag>? tagList;
List<Pages>? pages;
String? date;
Diary({
this.title,
this.location,
this.tagList,
this.pages,
this.date,
this.address,
});
Diary.fromJson(Map<String, dynamic> json) {
title = json['title'] ?? "";
location = json['location'] ?? "";
address = json["address"] ?? "";
tagList = json['tag_list'] ?? <Tag>[];
pages = json['pages'] ?? <Pages>[];
date = json['date'] == null ? '' : json['date'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['title'] = this.title;
data['location'] = this.location;
data['tag_list'] = this.tagList;
data['pages'] = this.pages;
data['date'] = this.date;
data['address'] = this.address;
return data;
}
}
class Pages {
int? order;
String? description;
List<String>? images;
Pages({
this.order,
this.description,
this.images,
});
Pages.fromJson(Map<String, dynamic> json) {
order = json['order'] ?? 0;
description = json['description'] ?? "";
images = json['images'] == null ? [] : json["images"].cast<String>();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['order'] = this.order;
data['description'] = this.description;
data['images'] = this.images;
return data;
}
}
class Tag {
int? id;
String? tagName;
Tag({this.id, this.tagName});
Tag.fromJson(Map<String, dynamic> json) {
id = json['id'];
tagName = json['tag_name'] ?? "";
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['tag_name'] = this.tagName;
return data;
}
}
Я не знаю, что вызывает эту ошибку. пожалуйста, помогите
Я предполагаю, что, когда я запускаю tojson, кажется, возникает проблема с типом, но я не знаю, какая часть и как ее исправить, я только начинаю с flutter, буду признателен за любой совет.
я ошибся, когда изменил код, как это.
data['tag_list'] = this.tagList.toString();
data['pages'] = this.pages.toString();
ошибка заключается в
Unhandled Exception: type 'String' is not a subtype of type 'List<Tag>?'
Ответ №1:
Попробуйте заменить
tagList = json['tag_list'] ?? <Tag>[];
с
tagList = List<Tag>.from(json["tag_list"].map((x) => Tag.fromJson(x)))
И эта строка
data['tag_list'] = this.tagList;
с
data['tag_list'] = this.tagList.map((tag) => tag.toJson()),
Ответ №2:
вы также должны вызвать методы toJSON() из своих тегов:
data['tag_list'] = this.tagList.map((tag) => tag.toJson()),
Комментарии:
1. и вы также неправильно расшифровываете теги в своем методе FromJSON()