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
相关产品推荐
相关产品推荐

