• springMVC返回的json日期为Long的格式化


     

    springMVC返回的json日期为Long的格式化

    标签: spring mvcjson格式化mybatis时间
     分类:

    springMVC+myBatis查询数据,得到date类型数据,返回json日期为Long数字(毫秒数)的日期格式化方案: 
    1、springMVC配置文件统一返回格式:

     1 <mvc:annotation-driven>  
     2     <!-- 处理responseBody 里面日期类型 -->  
     3         <mvc:message-converters>  
     4             <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">  
     5                 <property name="objectMapper">  
     6                     <bean class="com.fasterxml.jackson.databind.ObjectMapper">  
     7                         <property name="dateFormat">  
     8                             <bean class="java.text.SimpleDateFormat">  
     9                                 <constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />  
    10                             </bean>  
    11                         </property>  
    12                     </bean>  
    13                 </property>  
    14             </bean>  
    15         </mvc:message-converters>  
    16     </mvc:annotation-driven>

    2、jackson 注解处理

    @JsonFormat  :
            此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private Date createtime;
    
    
    @JsonIgnoreProperties : 
             此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。  
    
    @JsonIgnore  :
             此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。 
    
    @JsonSerialize  
    
     // 反序列化一个固定格式的Date    
        @JsonDeserialize(using = CustomDateDeserialize.class)    
        public void setBirthday(Date birthday) {    
            this.birthday = birthday;    
        }   
    
     // 序列化指定格式的double格式    
        @JsonSerialize(using = CustomDoubleSerialize.class)    
        public double getSalary() {    
            return salary;    
        }    
    
    自定义一个格式化类:
    public class CustomDateDeserialize extends JsonDeserializer<Date> {    
    
        private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");    
    
        @Override    
        public Date deserialize(JsonParser jp, DeserializationContext ctxt)    
                throws IOException, JsonProcessingException {    
    
            Date date = null;    
            try {    
                date = sdf.parse(jp.getText());    
            } catch (ParseException e) {    
                e.printStackTrace();    
            }    
            return date;    
        }    
    }    

    3、自定义注解

    import java.io.IOException;  
    import java.text.SimpleDateFormat;  
    import java.util.Date;  
    
    import com.fasterxml.jackson.core.JsonGenerator;  
    import com.fasterxml.jackson.core.JsonProcessingException;  
    import com.fasterxml.jackson.databind.JsonSerializer;  
    import com.fasterxml.jackson.databind.SerializerProvider;  
    
    /**  
     * ClassName:DateJsonSerializer <br/>  
     * Function: 日期类型格式化,格式化为:yyyy-MM-dd HH:mm:ss 格式. 用法如下:<br/>  
     * Reason:   @JsonSerialize(using=DateJsonSerializer.class) 
     *           @Column(name="BIRTHDAY") 
     *           public Date getBirthday() { 
     *              return birthday; 
     *           } 
     *          . <br/>  
     * Date:     2014年7月10日 下午1:26:08 <br/>  
     * @author   zhangzhaoyu  
     * @version   1.0 
     * @since    JDK 1.7  
     * @see        
     */  
    public class DateJsonSerializer extends JsonSerializer<Date> {  
    
        @Override  
        public void serialize(Date value, JsonGenerator jgen,  
                SerializerProvider provider) throws IOException,  
                JsonProcessingException {  
             SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
             String formattedDate = formatter.format(value);  
             jgen.writeString(formattedDate);  
        }  
    }    
     
  • 相关阅读:
    关于MySQL慢日志,你想知道的都在这
    h5 唤起app或跳转appStore
    ios 报错 Invalid row height provided by table delegate. Value must be at least 0.0, or UITableViewAutomaticDi......
    url的长度问题
    CUICatalog: Invalid asset name supplied:
    -[UITableView copyWithZone:]: unrecognized selector sent to instance 0x7XXXXXX00
    iOS项目运行出现:[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object
    UICachedDeviceRGBColor CGImage]: unrecognized selector sent to instance 0xxxxxxxxxxx'
    iOS Xcode 10: Multiple commands produce
    2019 开篇
  • 原文地址:https://www.cnblogs.com/liuyingke/p/7491063.html
Copyright © 2020-2023  润新知