作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要使用 Gson 输出枚举值,由于客户端限制,它需要小写。
例如 CLOSE_FILE
将是 close_file
。
有没有简单的方法来做到这一点?我已经看过制作一个实现 JsonSerializer
的类,但看起来我必须手动序列化整个类(这非常复杂)是这种情况吗?
最佳答案
如果您可以控制 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();
关于java - 小写枚举 Gson,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056676/
我是一名优秀的程序员,十分优秀!