Gson解析(6)——注册TypeAdapter及处理Enum类型
来源:互联网 发布:mastercam多轴编程教程 编辑:程序博客网 时间:2024/06/05 11:04
枚举类型给我们的程序带来了好处,如何用Gson来实现与Json的互转呢?请看本文.
本文重点掌握如何自己写一个TypeAdapter及注册TypeAdapter和处理Enum类型.
实体类:
- public enum PackageState {
- PLAY, UPDATE, UPDATING, DOWNLOAD, DOWNLOADING,
- }
- public class PackageItem {
- private String name;
- private PackageState state;
- private String size;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public PackageState getState() {
- return state;
- }
- public void setState(PackageState state) {
- this.state = state;
- }
- public String getSize() {
- return size;
- }
- public void setSize(String size) {
- this.size = size;
- }
- @Override
- public String toString() {
- return "PackageItem [name=" + name + ", size=" + size + ", state="
- + state + "]";
- }
- }
自己写一个转换器实现JsonSerializer<T>接口和jsonDeserializer<T>接口:
- mport java.lang.reflect.Type;
- import com.google.gson.JsonDeserializationContext;
- import com.google.gson.JsonDeserializer;
- import com.google.gson.JsonElement;
- import com.google.gson.JsonParseException;
- import com.google.gson.JsonPrimitive;
- import com.google.gson.JsonSerializationContext;
- import com.google.gson.JsonSerializer;
- public class EnumSerializer implements JsonSerializer<PackageState>,
- JsonDeserializer<PackageState> {
- // 对象转为Json时调用,实现JsonSerializer<PackageState>接口
- @Override
- public JsonElement serialize(PackageState state, Type arg1,
- JsonSerializationContext arg2) {
- return new JsonPrimitive(state.ordinal());
- }
- // json转为对象时调用,实现JsonDeserializer<PackageState>接口
- @Override
- public PackageState deserialize(JsonElement json, Type typeOfT,
- JsonDeserializationContext context) throws JsonParseException {
- if (json.getAsInt() < PackageState.values().length)
- return PackageState.values()[json.getAsInt()];
- return null;
- }
- }
- import com.google.gson.Gson;
- import com.google.gson.GsonBuilder;
- public class GsonTest6 {
- public static void main(String[] args) {
- GsonBuilder gsonBuilder = new GsonBuilder();
- gsonBuilder.registerTypeAdapter(PackageState.class,
- new EnumSerializer());
- Gson gson = gsonBuilder.create();
- PackageItem item = new PackageItem();
- item.setName("item_name");
- item.setSize("500M");
- item.setState(PackageState.UPDATING);// 这个 state是枚举值
- String s = gson.toJson(item);
- System.out.println(s);
- System.out.println("--------------------------------");
- PackageItem retItem = gson.fromJson(s, PackageItem.class);
- System.out.println(retItem);
- }
- }
- {"name":"item_name","state":2,"size":"500M"}
- --------------------------------
- PackageItem [name=item_name, size=500M, state=UPDATING]
文章转自:http://blog.csdn.net/lk_blog/article/details/7685347
感谢博主的无私分享!
0 0
- Gson解析(6)——注册TypeAdapter及处理Enum类型
- Gson注册TypeAdapter及处理Enum类型
- Gson-----9、注册TypeAdapter及处理Enum类型
- GsonBilder注册TypeAdapter及处理Enum类型
- Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型
- Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型
- Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型
- Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型
- Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型
- Gson 基础教程 —— 自定义类型适配器(TypeAdapter)
- Gson使用四(TypeAdapter)
- GSON: TypeAdapter
- gson-typeadapter
- JSON解析类库之Gson(4) --- TypeAdapter接管序列化与反序列化
- JSON解析类库之Gson(5) --- TypeAdapter性能分析
- enum——枚举类型解析
- Gson 自定义TypeAdapter
- Google Gson:TypeAdapter
- Hadoop命令大全
- 工作总结概述
- Hbase 源码分析之 Regionserver上的 Get 全流程
- Java Callable测试
- 我的XPath笔记
- Gson解析(6)——注册TypeAdapter及处理Enum类型
- iOS编程--------UIControl的作用及其子类UISegmentedControl的使用 / UISlider的使用 / UIImageView的使用
- Java序列化的机制和原理
- 【总结】Java基础总结⑹
- Kafka集群文档
- [Python进阶-3]面向对象,类,实例,属性,方法,类属性,类方法,内部属性
- leetcode题目 旋转排序数列的查找
- 回顾spring(云计算项目)
- 【总结】Java基础总结⑺