【发布时间】:2021-02-09 00:26:18
【问题描述】:
我正在尝试将我的 JSON 解析为 Data 类对象。我做了一些研究,确实找到了一些有用的文章,但仍然遇到错误。
我从后端得到的响应:
"entrances": {
"options": {
"mainEntrance": {
"text": "Enter through the main doors"
},
"backEntrance": {
"text": "Enter through the back doors"
},
"sideEntrance": {
"text": "Enter through the side doors"
}
},
"footer": "Text goes here"
},
"status": {
"state": "open"
}
}
型号
class MyClass {
String id;
Options option;
MyClass({this.id, this.option});
MyClass.fromJson(Map<String, dynamic> json) {
id = json['id'];
option = json['option'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['option'] = this.option;
return data;
}
}
class Options {
String name;
String text;
Options({this.name, this.text});
Options.fromJson(Map<String, dynamic> json) {
name = json['name'];
text = json['text'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['name'] = this.name;
data['text'] = this.text;
return data;
}
}
解码响应和映射
setState(() {
Map myMap = json.decode(response.body);
List<MyClass> myClassList = new List<MyClass>();
myMap['entrances'].forEach((key, value) {
value['id'] = key;
myClassList.add(MyClass.fromJson(value));
});
myClassList.forEach((MyClass) {
print(MyClass.id);
print(MyClass.option.name);
print("--------------------\n");
});
});
我收到此错误:
Unhandled Exception: NoSuchMethodError: Class 'String' has no instance method '[]='.
Tried calling: []=("id", "footer")
我做错了什么?有更好的方法吗?
【问题讨论】:
标签: json class flutter dictionary dart