6

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

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

枚举分类{无,打开,非活动,关闭,默认,删除,ZeroRecord }

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

从 JSON 加载时出现异常

例外:无效参数:4不是受支持的值之一:无、打开、非活动、关闭、默认、删除、ZeroRecord

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

4

1 回答 1

14

基本上你有两个选择。(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;
}
于 2020-03-23T19:32:49.550 回答