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

Flutter中如何从枚举值获取对应的JsonKey名称?

如何从Flutter枚举中获取@JsonValue标注的字符串值

你可以通过两种方式获取Bear.blackBear对应的"black_bear"字符串:

方法一:手动扩展枚举

给Bear枚举添加扩展类,通过switch语句返回对应的值:

enum Bear {
  panda,
  @JsonValue("black_bear") blackBear,
  @JsonValue("brown_bear") brownBear,
}

extension BearJsonValue on Bear {
  String get jsonValue {
    switch (this) {
      case Bear.panda:
        return 'panda';
      case Bear.blackBear:
        return 'black_bear';
      case Bear.brownBear:
        return 'brown_bear';
    }
  }
}

使用方式:

String value = Bear.blackBear.jsonValue; // 得到"black_bear"

方法二:利用json_serializable自动生成代码

如果已经依赖json_annotation和json_serializable包,可通过自动生成代码简化操作:

  1. 修改枚举代码,添加注解并指定part文件:
import 'package:json_annotation/json_annotation.dart';

part 'bear.g.dart';

@JsonSerializable()
enum Bear {
  panda,
  @JsonValue("black_bear") blackBear,
  @JsonValue("brown_bear") brownBear,
}
  1. 运行build命令生成代码:
flutter pub run build_runner build
  1. 直接调用生成的toJson()方法获取值:
String value = Bear.blackBear.toJson(); // 得到"black_bear"

两种方法各有优劣:手动扩展适合枚举成员较少的场景,无需额外配置;自动生成方式更适配复杂枚举,能避免手动编写switch时的遗漏或错误。

内容的提问来源于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 04:59:55