在json_serialization中,当我使用注解@JsonKey时(必需:false),我可以使一个变量为空,但是我必须用这个来注解所有的变量,有没有一种方法可以使这个对于一个类来说是通用的,所以所有的变量都可以为空?例如
有没有什么方法可以概括这一点?
btxsgosb1#
我认为你想要的是@JsonSerializable注解的includeIfNull property:
@JsonSerializable
@JsonSerializable(includeIfNull: true) class MyClass { ... }
默认情况下,这会使所有字段都可为空,并在序列化输出中包括具有空值的字段。
final String? sender;
3b6akqbq2#
我看到了一些问题。没听说过那个json_serialization包,在pub.dev也找不到。您可以基于从JSON读取的数据创建Dart对象,但不能具有NULL属性。Dart类的所有属性都应该立即初始化,或者在调用initState()时给予它们一个值时有一个late引用。另外,JSON不需要固定的数据格式,但是,如果您同时控制创建和读取JSON的服务,则可以强制它始终具有所需的属性。如果使用第三方API或服务,则必须确保属性在使用它们之前已经存在,并且可以使用Map<String, Dynamic>来存储JSON内容,而不是将每个属性存储在Dart类中。如果你真的需要一个Dart类来存储值,你应该将所有的String参数初始化为空,而不是NULL。
NULL
initState()
Map<String, Dynamic>
2条答案
按热度按时间btxsgosb1#
我认为你想要的是
@JsonSerializable
注解的includeIfNull property:默认情况下,这会使所有字段都可为空,并在序列化输出中包括具有空值的字段。
3b6akqbq2#
我看到了一些问题。没听说过那个json_serialization包,在pub.dev也找不到。
您可以基于从JSON读取的数据创建Dart对象,但不能具有
NULL
属性。Dart类的所有属性都应该立即初始化,或者在调用
initState()
时给予它们一个值时有一个late引用。另外,JSON不需要固定的数据格式,但是,如果您同时控制创建和读取JSON的服务,则可以强制它始终具有所需的属性。
如果使用第三方API或服务,则必须确保属性在使用它们之前已经存在,并且可以使用
Map<String, Dynamic>
来存储JSON内容,而不是将每个属性存储在Dart类中。如果你真的需要一个Dart类来存储值,你应该将所有的String参数初始化为空,而不是
NULL
。