小写枚举Gson

hpcdzsge  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(172)

我需要使用Gson输出枚举值,由于客户端的限制,需要使用小写。
例如,CLOSE_FILE将为close_file
有没有简单的方法可以做到这一点?我已经考虑过创建一个实现JsonSerializer的类,但看起来我必须手动序列化整个类(这是相当复杂的),是这种情况吗?

eqzww0vc

eqzww0vc1#

如果您可以控制enum型别,请使用@SerializedName注解其成员,并给予适当的序列化值。例如,

enum Action {
    @SerializedName("close_file")
    CLOSE_FILE;
}

如果您无法控制enum,请在创建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();
kqqjbcuj

kqqjbcuj2#

如果要将所有枚举序列化为小写,可以使用以下代码
第一个

eiee3dmh

eiee3dmh3#

易于使用的特定类型适配器:
第一个

相关问题