dart 中的 json_serializable 枚举值

cjm*_*ues 5 dart json-serialization

我是飞镖开发的新手...

我不知道如何使用带有枚举类型的 Json_serializable 包。我的数据库将枚举值作为整数,但看起来 JSON_Serializable 希望该值是枚举名称的字符串表示形式.. IE:

枚举分类 { 无、打开、不活动、关闭、默认、删除、零记录}

数据库将分类作为整数值(4:这是默认值)

从 JSON 加载时出现异常

例外:无效参数:4不是支持的值之一:None、Open、Inactive、Closed、Default、Delete、ZeroRecord

如何强制 JSON_Serializable 将 4 视为“默认”?

can*_*a20 10

基本上你有两个选择。(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,
}
Run Code Online (Sandbox Code Playgroud)

如果你真的想要一个默认值,你可以做的另一件事是使用@JsonKey注释并将unknownEnumValue属性设置为所需的默认值

class MyModel {
  @JsonKey(unknownEnumValue: Classification.Default)
  Classification classification;
}
Run Code Online (Sandbox Code Playgroud)