dart 中的 json_serializable 枚举值
Posted
技术标签:
【中文标题】dart 中的 json_serializable 枚举值【英文标题】:json_serializable enum values in dart 【发布时间】:2019-08-23 06:11:57 【问题描述】:我是飞镖开发的新手...
我不知道如何将 Json_serializable 包与枚举类型一起使用。我的数据库将枚举值作为整数,但看起来 JSON_Serializable 希望该值是枚举名称的字符串表示形式。IE:
枚举分类无,打开,非活动,关闭,默认,删除,ZeroRecord
数据库的分类是一个整数值(4:这是默认值)
从 JSON 加载时出现异常
例外:无效参数:4
不是支持的值之一:无、打开、非活动、关闭、默认、删除、ZeroRecord
如何强制 JSON_Serializable 将 4 视为“默认”?
【问题讨论】:
【参考方案1】:基本上你有两个选择。 (AFAIK)
在您的枚举文件中,您可以为每个值添加@JsonValue(VALUE)
注释,json_serializable 将使用该值而不是名称,它实际上可以是任何值。
你可以让你的枚举如下:
enum Classification
@JsonValue(0)
None,
@JsonValue(1)
Open,
@JsonValue(2)
Inactive,
@JsonValue(3)
Closed,
@JsonValue(4)
Default,
@JsonValue(5)
Delete,
@JsonValue(6)
ZeroRecord,
如果你真的想要一个默认值,你可以做的另一件事是使用@JsonKey
注释并将unknownEnumValue
属性设置为所需的默认值
class MyModel
@JsonKey(unknownEnumValue: Classification.Default)
Classification classification;
【讨论】:
以上是关于dart 中的 json_serializable 枚举值的主要内容,如果未能解决你的问题,请参考以下文章
Dart null 安全性和使用 json_serializable 将 JSON 解析为模型
具有枚举值的映射的 Dart json_serializable defaultValue
使用 json_serializable (flutter packages pub run build_runner build) 问题