You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter Freezed中@JsonValue注解的作用是什么?

@JsonValue 在 Flutter Freezed 中的用途

和负责映射JSON键与实体属性的@JsonKey不同,@JsonValue的核心作用是自定义枚举值或类实例在序列化为JSON时的输出内容,同时也会影响反序列化时的匹配逻辑。

常见使用场景:

  • 枚举类型序列化:默认情况下,枚举会被序列化为它的名称字符串,通过@JsonValue可以指定自定义的JSON值(比如数字、特定字符串)。
    示例:

    enum Status {
      @JsonValue(1)
      active,
      @JsonValue(0)
      inactive,
    }
    

    这样Status.active会被序列化为1,而非字符串"active";反序列化时,JSON中的1也会被解析为Status.active。

  • 类实例的自定义序列化:如果某个类作为另一个实体的字段,你可以在类的特定方法上标记@JsonValue,指定该类实例序列化后的JSON表现。
    示例:

    class UserRole {
      final String name;
      final int level;
    
      UserRole(this.name, this.level);
    
      @JsonValue
      String toJsonValue() => "$name:$level";
    }
    

    当UserRole实例被序列化时,会输出"admin:10"这类字符串,而非默认的对象结构。

总结来说,@JsonKey负责字段名的映射转换,@JsonValue负责字段值的序列化/反序列化规则定义。

内容的提问来源于stack exchange,提问作者user3808307

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 10:17:00