使用Jackson时转换JSON时,日期格式设置

  在使用Jackson转化JSON对象的时候,发现: 显示的时候,日期始终显示不正确,输出的日期是一串数字代表的时间戳,不符合要求,所以想到Jackson应当有方法设置输出的日期格式。后来一查果然有两种方式来实


1.普通的方式:

默认是转成timestamps形式的,通过下面方式可以取消timestamps。

objectMapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);

这样将使时间生成使用所谓的use a [ISO-8601 ]-compliant notation, 输出类似如下格式的时间: "1970-01-01T00:00:00.000+0000".

当然也可以自定义输出格式:

ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally  
		 
DeserializationConfig cfg = mapper.getDeserializationConfig();
//设置JSON时间格式  
SimpleDateFormat myDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

cfg.setDateFormat(myDateFormat); 


2.annotaion的注释方式:

此方式直接作用在类中,加到实体类的date属性或其get方法上都可以

@JsonIgnoreProperties  
         此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。  
  
@JsonIgnore  
         此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。  
  
@JsonFormat  
        此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")  
  
@JsonSerialize 


/**
 * @Description:spring返回json,时间转换器
 * @author whl
 * @version 1.0  2014-8-28 下午5:13:30
 */
public class JsonDateSerializer extends JsonSerializer<Date> { 
	
	   private SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
	 
	   @Override  
	   public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)  
	           throws IOException, JsonProcessingException {  
	       String value = dateFormat.format(date);  
	       gen.writeString(value);  
	   }  
	   
	   
	   
}  

//使用方法
public class User{
	
	/**属性上也可以使用
	 * @JsonSerialize(using=JsonDateSerializer.class)  
	 */
	private Date date;
	
	// 反序列化一个固定格式的Date    
    @JsonDeserialize(using=JsonDateSerializer.class)    
    public void setDate(Date date) {    
        this.date = date;    
    }   
  
    // 序列化指定格式的double格式    
    @JsonSerialize(using=JsonDateSerializer.class)    
    public double getDate() {    
        return date;    
    }    
  
}


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值