使用 google gson 转换Timestamp为JSON字符串
2016-04-29 10:07
651 查看
package com.test.base; import java.lang.reflect.Type; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; 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 TimestampTypeAdapter implements JsonSerializer<Timestamp>, JsonDeserializer<Timestamp> { private final DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public Timestamp deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { if (!(jsonElement instanceof JsonPrimitive)) { throw new JsonParseException("The data should be a string value"); } try { Date date = format.parse(jsonElement.getAsString()); return new Timestamp(date.getTime()); } catch (ParseException e) { throw new JsonParseException(e); } } @Override public JsonElement serialize(Timestamp timestamp, Type type, JsonSerializationContext jsonSerializationContext) { String dataFormatAsString = format.format(new Date(timestamp.getTime())); return new JsonPrimitive(dataFormatAsString); } }
@Test public void gsonTest() { Gson gson1 = new GsonBuilder().registerTypeAdapter(Timestamp.class, new TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create(); CascadeReport tem = new CascadeReport(); tem.setDate(new Timestamp(new Date().getTime())); tem.setDepartment("武汉刑侦"); String jsonString = gson1.toJson(tem, CascadeReport.class); System.out.println(jsonString); ////////////////////////////////////////////////////////// String reportData = "[{date:\"2016-01-01 09:00:01\",department:\"xxxx\",ipAddress:\"192.168.120.120\",failedNum:2,ruleIDs:\"1002,1003\",regionCode:168430083,account:\"李四\",type:1 }]"; List<CascadeReport> list = gson.fromJson(reportData, new TypeToken<List<CascadeReport>>() { }.getType()); System.out.println(list.get(0).getDate().toGMTString()); }
相关文章推荐
- JavaScript函数柯里化详解
- js中date时间转换yyyy-mm-dd hh:MM:ss等格式字符串
- Arcgis for Js之Graphiclayer扩展详解(饼图)
- 上下箭头选中 选项事件 JS
- 在用到fastjson时遇到的困惑,一些变量名称不规范导致转换后的json字符串丢失这些变量
- dbda封装类(包括:返回二维数组、Ajax调用返回字符串、Ajax调用返回JSON)
- JS
- JS获取屏幕大小
- js原生态跨域请求与ajax中jsonp跨域请求
- js跳转
- 取json中的键值(json中键值不固定的时候)
- 最流行的编程语言 JavaScript 能做什么?
- JavaScript对象
- JavaScript创建对象
- JSP和Servlet的相互调用
- javascript中利用柯里化函数实现bind方法
- JavaScript函数柯里化详解
- JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
- javascript中利用柯里化函数实现bind方法【推荐】
- 深入剖析JavaScript中的函数currying柯里化