1,实现一个类型适配器(TypeAdapter)

自定义类型适配器需要实现两个接口:

JsonSerializer<T>

JsonDeserializer<T>

和两个方法:

  1. //序列化
  2. public JsonElement serialize(T src, Type typeOfSrc, JsonSerializationContext context);
  1. //反序列化
  2. public T deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
  3. throws JsonParseException;

其中 JsonElement 的类层次为:

2,注册类型适配器

  1. Gson gson = new GsonBuilder()
  2. .registerTypeAdapter(Timestamp.class, new TimestampAdapter())
  3. .create();

3,自己写的一个 Timestamp 类型适配器

    1. package com.gdsc.core.adapter;
    2. import java.lang.reflect.Type;
    3. import java.sql.Timestamp;
    4. import com.google.gson.JsonDeserializationContext;
    5. import com.google.gson.JsonDeserializer;
    6. import com.google.gson.JsonElement;
    7. import com.google.gson.JsonParseException;
    8. import com.google.gson.JsonPrimitive;
    9. import com.google.gson.JsonSerializationContext;
    10. import com.google.gson.JsonSerializer;
    11. /**
    12. * Gson TypeAdapter
    13. * 实现了 Timestamp 类的 json 化
    14. * @author linwei
    15. *
    16. */
    17. public class TimestampAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> {
    18. @Override
    19. public Timestamp deserialize(JsonElement json, Type typeOfT,
    20. JsonDeserializationContext context) throws JsonParseException {
    21. if(json == null){
    22. return null;
    23. } else {
    24. try {
    25. return new Timestamp(json.getAsLong());
    26. } catch (Exception e) {
    27. return null;
    28. }
    29. }
    30. }
    31. @Override
    32. public JsonElement serialize(Timestamp src, Type typeOfSrc,
    33. JsonSerializationContext context) {
    34. String value = "";
    35. if(src != null){
    36. value = String.valueOf(src.getTime());
    37. }
    38. return new JsonPrimitive(value);
    39. }
    40. }

Gson 基础教程 —— 自定义类型适配器(TypeAdapter)的更多相关文章

  1. Java基础教程——枚举类型

    枚举类型 枚举类型在JDK 5时引入. enum WeekEnum { MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY } ...

  2. 自己定义GSON类型适配器

    Exception in thread "main" java.lang.RuntimeException: No-args constructor for class java. ...

  3. 《objective-c基础教程》学习笔记 (一)—— 开发环境配置和简单类型输出

    懒惰是富有最大的敌人,再不前进,我们就out了.最近工作比较轻松,不是很忙.于是想晚上下班回家学习点新东西.看着苹果大军的一天天壮大,心里也是痒痒的.于是就想先系统的学习下Objective-C,为之 ...

  4. [c#基础]泛型集合的自定义类型排序

    引用 最近总有种感觉,自己复习的进度总被项目中的问题给耽搁了,项目中遇到的问题,不总结又不行,只能将复习基础方面的东西放后再放后.一直没研究过太深奥的东西,过去一年一直在基础上打转,写代码,反编译,不 ...

  5. Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型

    Xamarin图表开发基础教程(12)OxyPlot框架支持的金融图表类型 OxyPlot组件中支持5种类型的金融图表,它们分别为销量图.高低图.股票K线图.股票走势图和旧式股票图,如图1.20~1. ...

  6. Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型

    Xamarin图表开发基础教程(11)OxyPlot框架支持的图表类型 OxyPlot组件中支持7种类型的条型图表,分别为普通条形图.线型条形图.矩形条形图.差值图.龙卷风图.普通柱形图和柱形误差图, ...

  7. Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型

    Xamarin图表开发基础教程(10)OxyPlot框架支持的图表类型 OxyPlot组件支持26种图表,这些图表按照功能和样式可以分为4大类,分别为线型图表.条型图表.金融图表和其它图表. 线型图表 ...

  8. Java基础教程:枚举类型

    Java基础教程:枚举类型 枚举类型 枚举是将一具有类似特性的值归纳在一起的方法.比如,我们可以将周一到周日设计为一个枚举类型.彩虹的七种颜色设计为一个枚举类型. 常量实现枚举 我们通过定义常量的方式 ...

  9. struts2基础---->自定义类型转换器

    这一章,我们开始struts2中自定义类型转换器的学习. 自定义类型转换器

随机推荐

  1. codevs 2449 骑士精神 (IDDfs)

    /* 限制步数 写迭代加深 注意剪枝:当先步数+不同的个数-1>当前限制的步数 就cut */ #include<cstdio> #include<cstring> #i ...

  2. Python 的数据类型

    列表 #coding=utf-8 students=["小明","小华","小李","小娟","小云" ...

  3. CSS选择符详解之关系选择符篇

    原文:http://www.chinaz.com/web/2012/1017/278553.shtml 相信大家都对CSS选择符都不陌生,选择符包含:元素选择符.关系选择符.属性选择符.伪类选择符.伪 ...

  4. java里面List和Array的区别是什么?

    java里面的List和Array的区别是什么? 1:数组是定长,list是自动增长.2:数组效率高,list效率低.总结:数组牺牲功能增加效率,list牺牲效率增加功能. http://bbs.cs ...

  5. MVC验证码的编写

    主要是相互学习一下mvc,希望各位大神指导 /// <summary> /// 生成随机数字 /// </summary> /// <returns>随机数字< ...

  6. 如何分析apache日志[access_log(访问日志)和error_log(错误日志)]

    如何分析apache日志[access_log(访问日志)和error_log(错误日志)] 发布时间: 2013-12-17 浏览次数:205 分类: 服务器 默认Apache运行会access_l ...

  7. 开启mysql慢查询日志并使用mysqldumpslow命令查看

    mysql服务器有一项功能,可以检测到哪条sql语句查询得比较慢,就是慢查询slowlog,现在介绍如何开启. 在[mysqld]下面增加如下代码: long_query_time = 1 log-s ...

  8. Windows Server 2003 SP2 R2 企业版/标准版/32与64位 CD-KEY

    微软发布Windows Server 2003 R2版的目的是希望透过它填补Windows Server 2003 SP1和Longhorn Server之间的产品发布时间间隔.所以Windows S ...

  9. mysql 存储引擎MYSIAM和INNODB特性比较

    事物:MYISAM不支持事物,MyISAM类型的表强调的是性能,其执行数度比InnoDB 类型更快.如果不考虑事物,大量的select和insert适合MYISAM表 锁:MYISAM支持表锁    ...

  10. 非UI线程和UI线程通信

    public void onClick(View v) { new Thread(new Runnable() { public void run() { final Bitmap bitmap = ...