dart 如何使JSON中不需要的所有变量都可序列化

soat7uwm  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(87)

在json_serialization中,当我使用注解@JsonKey时(必需:false),我可以使一个变量为空,但是我必须用这个来注解所有的变量,有没有一种方法可以使这个对于一个类来说是通用的,所以所有的变量都可以为空?
例如

有没有什么方法可以概括这一点?

btxsgosb

btxsgosb1#

我认为你想要的是@JsonSerializable注解的includeIfNull property

@JsonSerializable(includeIfNull: true)
class MyClass {
...
}

默认情况下,这会使所有字段都可为空,并在序列化输出中包括具有空值的字段。

  • 编辑 *:您仍然需要使用问号将变量标记为可空,例如:
final String? sender;
3b6akqbq

3b6akqbq2#

我看到了一些问题。没听说过那个json_serialization包,在pub.dev也找不到。
您可以基于从JSON读取的数据创建Dart对象,但不能具有NULL属性。
Dart类的所有属性都应该立即初始化,或者在调用initState()时给予它们一个值时有一个late引用。
另外,JSON不需要固定的数据格式,但是,如果您同时控制创建和读取JSON的服务,则可以强制它始终具有所需的属性。
如果使用第三方API或服务,则必须确保属性在使用它们之前已经存在,并且可以使用Map<String, Dynamic>来存储JSON内容,而不是将每个属性存储在Dart类中。
如果你真的需要一个Dart类来存储值,你应该将所有的String参数初始化为空,而不是NULL

相关问题