【问题标题】:json_serializable enum values in dartdart 中的 json_serializable 枚举值
【发布时间】:2019-08-23 06:11:57
【问题描述】:

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

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

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

数据库的分类是一个整数值(4:这是默认值)

从 JSON 加载时出现异常

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

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

【问题讨论】:

    标签: dart json-serialization


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-15
      • 2015-06-16
      • 2019-10-09
      • 1970-01-01
      • 2012-12-03
      • 2015-01-27
      • 2022-07-07
      • 1970-01-01
      • 2021-05-08
      相关资源
      最近更新 更多