未能将Json序列化为内部有List对象的对象(DART)



序列化时出错。控制台日志显示:

> NoSuchMethodError: Class 'String' has no instance method 'forEach'.
> Receiver: "no" Tried calling: forEach(Closure: (dynamic) => Null) dan
> 0      Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
> 1      new Article.fromJson (package:tribun_travel/model/article.dart:84:19)
> 2      new ResponseRead.fromJson (package:tribun_travel/model/response_read.dart:16:39)
> 3      BlogRepository.readNewsById (package:tribun_travel/repositories/blog_repository.dart:21:25)
> <asynchronous suspension>
> 4      BlogBloc.mapEventToState (package:tribun_travel/bloc/blog_bloc.dart:28:61) <asynchronous
> suspension>

我所做的是,我想在Dart中从json到Object进行序列化。在我的班级里有一个列表对象。代码段如下所示:

class ResponseRead {
String status;
String message;
String source;
Article data;
ResponseRead({this.status, this.message, this.source, this.data});
ResponseRead.fromJson(Map<String, dynamic> json) {
status = json['status'];
message = json['message'];
source = json['source'];
data = json['data'] != null ? new Article.fromJson(json['data']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['status'] = this.status;
data['message'] = this.message;
data['source'] = this.source;
if (this.data != null) {
data['data'] = this.data.toJson();
}
return data;
}
}
class Article{
String id;
String fulltexts;
List<Tag> tag;
List<Related> related;
Article(
{this.id,
this.fulltexts,
this.tag,
this.related
});
Article.fromJson(Map<String, dynamic> json) {
id = json['id'];
fulltexts = json['fulltexts'];
if (json['tag'] != null) {
tag = new List<Tag>();
json['tag'].forEach((v) {
tag.add(new Tag.fromJson(v));
});
}
if (json['related'] != null) {
related = new List<Related>();
json['related'].forEach((v) {
related.add(new Related.fromJson(v));
});
}
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['fulltexts'] = this.fulltexts;
if (this.tag != null) {
data['tag'] = this.tag.map((v) => v.toJson()).toList();
}
if (this.related != null) {
data['related'] = this.related.map((v) => v.toJson()).toList();
}
return data;
}
@override
String toString() {
return 'Article{id: $id, title: $title, photo: $photo}';
}
}

我认为我的服务没有问题,因为它是我想要的回报。但是,为什么我在序列化时仍然有错误?

更新这是我的Json文件示例

{
"status": "success",
"message": "Found",
"source": "memcached",
"article": {
"title": "Ini Alasan Pramugari Jarang Sakit Meski Terbang Berjam-jam",
"fulltexts": "<p><</p>",
"tag": [
{
"id": "1",
"title": "a",
"alias": "a"
},
{
"id": "2",
"title": "b",
"alias": "b"
}
],
"related": [
{
"id": "79224",
},
{
"id": "79219",
}
]
}
}

问题可能是您期望JSON中的json['related']json['tag']是一个列表,但它实际上是一个字符串。检查实际的JSON文本,您可能会发现"related": "some string",而不是"related": []

请发布实际的JSON,以便我们可以找到。

感谢

最新更新