dart中的json_serializable枚举值

时间:2019-04-02 02:06:36

标签: dart json-serialization

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

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

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

数据库的分类为整数值(4:默认值)

从JSON加载时出现异常

例外:无效的参数:4不是受支持的值之一:无,打开,不活动,关闭,默认,删除,零记录

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

1 个答案:

答案 0 :(得分:5)

基本上,您有两个选择。 (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;
}