创建类型适配类:
- 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");
- public JsonElement serialize(Timestamp src, Type arg1, JsonSerializationContext arg2) {
- String dateFormatAsString = format.format(new Date(src.getTime()));
- return new JsonPrimitive(dateFormatAsString);
- }
- public Timestamp deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
- if (!(json instanceof JsonPrimitive)) {
- throw new JsonParseException("The date should be a string value");
- }
- try {
- Date date = format.parse(json.getAsString());
- return new Timestamp(date.getTime());
- } catch (ParseException e) {
- throw new JsonParseException(e);
- }
- }
- }
类型适配类
应用类型适配器 写道
Gson gson = new GsonBuilder().registerTypeAdapter(Timestamp.class,new TimestampTypeAdapter()).setDateFormat("yyyy-MM-dd HH:mm:ss").create();String jsonString = gson.toJson(resourceInfo,ResourceGeoInfo.class);
输出结果
Date 类型的时间转换第二种方式;
- Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
- String jsonString = gson.toJson(new Date(System.currentTimeMillis()),Date.class);
- System.out.println(jsonString);
输出结果:
"2010-01-07 12:24:34"