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

Posted 登愿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Jackson时转换JSON时,日期格式设置相关的知识,希望对你有一定的参考价值。

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.getSerializationConfig().setDateFormat(myDateFormat);
 
myDateFormat对象为java.text.DateFormat,具体使用清查java API

SimpleDateFormat myDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
objectMapper.getSerializationConfig().setDateFormat(myDateFormat);

2.annotaion的注释方式:

先定义自己需要的格式,例如:

Java代码

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;

/**
 *  java日期对象经过Jackson库转换成JSON日期格式化自定义类
 * @author yuruli
 * @date 2010-7-25
 */
public class CustomDateSerializer extends JsonSerializer {

        @Override
        public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                String formattedDate = formatter.format(value);
                jgen.writeString(formattedDate);
        }
}

然后在你的POJO上找到日期的get方法

@JsonSerialize(using = CustomDateSerializer.class)
public Date getCreateAt() {
     return createAt;
}


以上是关于使用Jackson时转换JSON时,日期格式设置的主要内容,如果未能解决你的问题,请参考以下文章

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

Jackson JSON对日期格式的解析设置

SpringBoot中使用@RequestBody时如何自定义需要转换的日期格式

将 json 日期转换为 Jackson 的众多日期之一

日期格式映射到 JSON Jackson

使用 Jackson 反序列化时禁用标量到字符串的转换