我需要使用Gson输出枚举值,由于客户端的限制,需要使用小写。例如,CLOSE_FILE将为close_file。有没有简单的方法可以做到这一点?我已经考虑过创建一个实现JsonSerializer的类,但看起来我必须手动序列化整个类(这是相当复杂的),是这种情况吗?
CLOSE_FILE
close_file
JsonSerializer
eqzww0vc1#
如果您可以控制enum型别,请使用@SerializedName注解其成员,并给予适当的序列化值。例如,
enum
@SerializedName
enum Action { @SerializedName("close_file") CLOSE_FILE; }
如果您无法控制enum,请在创建Gson示例时提供一个自定义的TypeAdapter。例如,
Gson
TypeAdapter
Gson gson = new GsonBuilder().registerTypeAdapter(Action.class, new TypeAdapter<Action>() { @Override public void write(JsonWriter out, Action value) throws IOException { out.value(value.name().toLowerCase()); } @Override public Action read(JsonReader in) throws IOException { return Action.valueOf(in.nextString().toUpperCase()); } }).create();
kqqjbcuj2#
如果要将所有枚举序列化为小写,可以使用以下代码第一个
eiee3dmh3#
易于使用的特定类型适配器:第一个
3条答案
按热度按时间eqzww0vc1#
如果您可以控制
enum
型别,请使用@SerializedName
注解其成员,并给予适当的序列化值。例如,如果您无法控制
enum
,请在创建Gson
示例时提供一个自定义的TypeAdapter
。例如,kqqjbcuj2#
如果要将所有枚举序列化为小写,可以使用以下代码
第一个
eiee3dmh3#
易于使用的特定类型适配器:
第一个