小写枚举Gson
我需要使用Gson输出枚举值,由于客户端限制需要小写。
例如, CLOSE_FILE
将是close_file
。
有一个简单的方法吗? 我已经看过制作一个实现JsonSerializer
的类,但看起来我必须手动序列化整个类(这是非常复杂的)是这样的吗?
如果您可以控制enum
类型,请使用@SerializedName
注释其成员并@SerializedName
指定适当的序列化值。 例如,
enum Action { @SerializedName("close_file") CLOSE_FILE; }
如果您无法控制enum
, TypeAdapter
在创建Gson
实例时提供自定义的TypeAdapter
。 例如,
Gson gson = new GsonBuilder().registerTypeAdapter(Action.class, new TypeAdapter() { @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();