【发布时间】:2020-02-07 07:13:42
【问题描述】:
我有一个 JSON 文件,结构如下:
[
{
"key1":"value1",
"key2":"value2",
"key3":"value3",
"key4":"value4",
},
{
"key1":"value1",
"key2":"value2",
"key3":"value3",
"key4":"value4",
}
]
我通过 HTTP 调用得到了它。我尝试将此 JSON 解析为颤振对象。因此我写了一个类:
class Foo {
List<Model> modelsAsJson;
Foo({this.modelsAsJson});
Foo.fromJson(List<dynamic> jsonData) {
modelsAsJson = jsonData.map((listItem) => Model.fromJson(listItem)).toList();
Foo(modelsAsJson: modelsAsJson);
}
}
我还为Model写了另一个类:
class Model {
String value1;
String value2;
String value3;
String value4;
Model({this.value1, this.value2, this.value3, this.value4});
Model.fromJson(Map<String, dynamic> json) {
Model(value1: json['key1'], value2: json['key2'], value3: json['key3'], value4: json['key4'],);
}
Map<String, dynamic> toJson() => {
'key1': value1,
'key2': value2,
'key3': value3,
'key4': value4
};
}
通过 HTTP 获取数据后,我将其解析为给定的对象,如下所示: http.Response = http.get(urlHere); 最终decodedJson = jsonDecode(response.body); 结果 = Foo.fromJson(decodedJson).modelsAsJson;
解析后的结果从modelsAsJson 得到正确的长度,但该列表中的每个model 的value1..value4 都是nulls。我做错了什么?
【问题讨论】:
-
另一个最好的办法是让你的模型类属性最终并在你的构造函数中初始化它们,如
Model(//.... obj) : value = obj["key"], //...;