zoukankan      html  css  js  c++  java
  • 使用 google gson 转换Timestamp为JSON字符串

    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());
        }
  • 相关阅读:
    【血型】+【星座】准到吓人
    一落叶而知秋为什么有些树到冬天要落叶?
    WebDAV介绍
    Ruby concurrency explained
    lexus.cnblogs.com
    微博拉近了大家的距离
    High Performance Ruby Part 3: nonblocking IO and web application scalability
    Taglib确实减轻了开发负担[转]
    php中urldecode()和urlencode()起什么作用啊
    header中ContentDisposition的作用
  • 原文地址:https://www.cnblogs.com/liaojie970/p/5445301.html
Copyright © 2011-2022 走看看