gpt4 book ai didi

class - Dart:基于 JSON 响应创建动态类

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

我需要创建一个具有动态字段的类,这取决于 API 返回的内容。

我正在使用定制的 Rest API,它返回的数据在所有情况下都没有相同数量的字段。到目前为止,我一直在使用带有工厂构造函数的类从响应中创建对象,如下所示:

class MyClass {
dynamic field1;
dynamic field2;
dynamic field3;
dynamic field4;

MyClass({
this.field1,
this.field2,
this.field3,
this.field4,
});

factory MyClass.fromJson(dynamic json) {
return MyClass(
field1: json['field1'],
field2: json['field2'],
field3: json['field3'],
field4: json['field4'],
);
}
}

如果响应是:
{
"field1": 123,
"field2": 432,
"field3": 213,
"field4": 331
}

但这并不适用于所有情况,因为某些响应包含少于或多于 4 个字段。

有可能:
{
"field1": 123,
"field2": 432,
"field3": 213
}

或者
{
"field1": 123,
"field2": 432,
"field3": 213,
"field4": 331,
"field5": 251
}

如何创建一个动态类来检查有多少字段并在运行时创建自己?

最佳答案

AFAIK,截至今天,没有办法实现您在 Dart 中的要求。你可以做的是:

class MyClass {
final Map<dynamic, dynamic> data;

MyClass(this.data);

factory MyClass.fromJson(dynamic json) {
assert(json is Map);
return MyClass(json['data']);
}
}

void main() {
// Let's say this is your json
final json = {
'data': {
'field1': 1,
'field2': 2.2,
},
};

// Create your MyClass instance
var myClass = MyClass.fromJson(json);

// Get the values
var field1 = myClass.data['field1']; // prints 1
var field2 = myClass.data['field2']; // prints 2.2
}

关于class - Dart:基于 JSON 响应创建动态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61942994/

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