gpt4 book ai didi

json - 在 Flutter 中解析 JSON 导致对象字段的 NULL 值

转载 作者:行者123 更新时间:2023-12-03 02:41:01 25 4
gpt4 key购买 nike

我有以下结构的 JSON 文件:

[
{
"key1":"value1",
"key2":"value2",
"key3":"value3",
"key4":"value4",
},
{
"key1":"value1",
"key2":"value2",
"key3":"value3",
"key4":"value4",
}
]

我通过 HTTP 调用得到了它。我尝试将此 JSON 解析为 flutter 对象。因此我写了一个类:
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 是 null s。我究竟做错了什么?

最佳答案

在你的情况下 Model.fromJson(Map<String, dynamic> json)是一个命名构造函数,所以在括号内应该初始化完成。而不是你只是创建一个新的 Model在构造函数里面,什么也不做。这就是为什么模型中的字段保持未初始化状态(默认为 null)。

应该这样写:

Model.fromJson(Map<String, dynamic> json) {
value1 = json['key1'];
value2 = json['key2'];
value3 = json['key3'];
value4 = json['key4'];
}

或者您可以使用工厂构造函数:

factory Model.fromJson(Map<String, dynamic> json) => Model(
value1: json['key1'],
value2: json['key2'],
value3: json['key3'],
value4: json['key4'],
);

关于json - 在 Flutter 中解析 JSON 导致对象字段的 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58312787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com