使用 google gson 转换Timestamp或Date类型为JSON字符串.

来源:互联网 发布:安卓推送联盟 知乎 编辑:程序博客网 时间:2024/05/16 11:51

创建类型适配类:

Timestamp类型适配类代码  收藏代码
  1. import java.lang.reflect.Type;  
  2. import java.sql.Timestamp;  
  3. import java.text.DateFormat;  
  4. import java.text.ParseException;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7.   
  8. import com.google.gson.JsonDeserializationContext;  
  9. import com.google.gson.JsonDeserializer;  
  10. import com.google.gson.JsonElement;  
  11. import com.google.gson.JsonParseException;  
  12. import com.google.gson.JsonPrimitive;  
  13. import com.google.gson.JsonSerializationContext;  
  14. import com.google.gson.JsonSerializer;  
  15.   
  16. public class TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp>{  
  17.     private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  18.     public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) {  
  19.         String dateFormatAsString = format.format(new Date(src.getTime()));  
  20.         return new JsonPrimitive(dateFormatAsString);  
  21.     }  
  22.   
  23.     public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {  
  24.         if (!(json instanceof JsonPrimitive)) {  
  25.             throw new JsonParseException("The date should be a string value");  
  26.         }  
  27.   
  28.         try {  
  29.             Date date = format.parse(json.getAsString());  
  30.             return new Timestamp(date.getTime());  
  31.         } catch (ParseException e) {  
  32.             throw new JsonParseException(e);  
  33.         }  
  34.     }  
  35.   
  36. }  

 

  类型适配类

   应用类型适配器 写道

Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.class,new TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();
String jsonString = gson.toJson(resourceInfo,ResourceGeoInfo.class);

  
   输出结果

{"positionTime":"2010-01-07 10:57:27"}

 

Date 类型的时间转换第二种方式;

Java代码  收藏代码
  1. Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();  
  2. String jsonString = gson.toJson(new Date(System.currentTimeMillis()),Date.class);  
  3. System.out.println(jsonString);  
 

输出结果:

"2010-01-07 12:24:34"