zoukankan      html  css  js  c++  java
  • spring mvc3中JACKSON序列化日期格式的问题

    spring mvc3中JACKSON序列化日期格式的问题 - 墙头草的Java - BlogJava在SPRING MVC3中,比如做REST时,经常要用JASON去解析,遇到了日期格式化的问题,
    请看例子:

    1) 比如有一个POJO
      package com.loiane.model;

    import java.util.Date;

    import org.codehaus.jackson.annotate.JsonAutoDetect;

    @JsonAutoDetect
    @Entity
    public class Company {

        private int id;
        private double price;
        private String company;
        private Date date;
        private String size;
        private byte visible;
    }

    2)在controller中,返回一个MAP
       public @ResponseBody Map<String,List<Company>> view() throws Exception

    3) 于是SPIRNG MVC返回如下的JSON字符:
       {"total":27,"data":[{"price":71.72,"company":"3m Co","visible":1,"id":1,"size":"large","date":1188615600000},{"price":29.01,"company":"Aloca
    Inc","visible":0,"id":2,"size":"medium","date":1185937200000},{"price":83.81,"company":"Altria Group
    Inc","visible":0,"id":3,"size":"large","date":1186110000000
    。。。。。。。。。。。。。。。。

    4) 可以看到,返回的时间格式不大好看

    5)于是,可以这样设置:
       @JsonSerialize(using=JsonDateSerializer.class)
    public Date getDate() {
        return date;
    }
    其中   JsonDateSerializer是新编写的类,继承了JsonSerializer
      import java.io.IOException;集装箱运费
    import java.text.SimpleDateFormat;
    import java.util.Date;

    import org.codehaus.jackson.JsonGenerator;
    import org.codehaus.jackson.JsonProcessingException;
    import org.codehaus.jackson.map.JsonSerializer;
    import org.codehaus.jackson.map.SerializerProvider;
    import org.springframework.stereotype.Component;
    @Component
    public class JsonDateSerializer extends JsonSerializer<Date>{

        private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

        @Override
        public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
                throws IOException, JsonProcessingException {

            String formattedDate = dateFormat.format(date);

            gen.writeString(formattedDate);
        }

    }

       很简单,格式化一下,这下输出JSON就可以了
    {"total":27,"data":[{"price":71.72,"company":"3m Co","visible":1,"id":1,"size":"large","date":"09-01-2007"},{"price":29.01,"company":"Aloca
    Inc","visible":0,"id":2,"size":"medium","date":"08-01-2007"},{"price":83.81,"company":"Altria Group
    Inc","visible":0,"id":3,"size":"large","date":"08-03-2007"},{"price":52.55,"company":"American Express Company","visible":1,"id":4,"size":"extraTP LINK路由器无线信号能传送多少米
    large","date":"01-04-2008"},{"price":64.13,"company":"American International Group
    Inc.","visible":1,"id":5,"size":"small","date":"03-04-2008"},{"price":31.61,"company":"AT&T Inc.","visible":0,"id":6,"size":"extra
    large","date":"02-01-2008"},{"price":75.43,"company":"Boeing Co.","visible":1,"id":7,"size":"large","date":"01-01-2008"},{"price":67.27,"company":"Caterpillar
    Inc.","visible":1,"id":8,"size":"medium","date":"12-03-2007"},{"price":49.37,"company":"Citigroup,
    Inc.","visible":1,"id":9,"size":"large","date":"11-24-2007"},{"price":40.48,"company":"E.I. du Pont de Nemours and Company","visible":0,"id":10,"size":"extra
    large","date":"05-09-2007"}],"success":true}



  • 相关阅读:
    angularjs1.6.4中使用ng-table出现data.slice is not a function的问题
    使用sql语句获取数据库表的信息
    IIS部署web,字体404的问题
    SQL中partition关键字的使用
    asp.net 配置二级域名的共享session,并实现sso单点登录
    同一浏览器中同一JavaWeb程序不共享session方法
    Liquibase的使用
    对象并不一定都是在堆上分配内存的
    阿里面试题,为什么wait()方法要放在同步块中?
    粗浅看 Tomcat系统架构分析
  • 原文地址:https://www.cnblogs.com/wang3680/p/490b618d004dafcc0a7555001c82312d.html
Copyright © 2011-2022 走看看