首页 Java Java 用Jackson JSON序列化(serialize)时间日期Joda DateTime

Java 用Jackson JSON序列化(serialize)时间日期Joda DateTime

1、使用Maven引用Jackson

pom.xml增加如下配置:

<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.5.4</version>
</dependency>

2、使用自定义序列化器CustomDateSerializer

1)在需要的格式化时间的对象

@JsonSerialize(using = CustomDateSerializer.>public DateTime getDate() { ... }

2)自定义序列化器CustomDateSerializer

public >CustomDateSerializer extends JsonSerializer<DateTime> {
private static DateTimeFormatter formatter =
DateTimeFormat.forPattern("dd-MM-yyyy");
@Override
public void serialize(DateTime value, JsonGenerator gen,
SerializerProvider arg2)
throws IOException, JsonProcessingException {
gen.writeString(formatter.print(value));
}
}

3、通过JodaModule使用默认时间日期格式

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());

4、通过CustomObjectMapper实现

1)对象映射器执行全局配置

<bean id="jacksonObjectMapper" hljs-string">"com.company.CustomObjectMapper" />
<bean id="jacksonSerializationConfig" hljs-string">"org.codehaus.jackson.map.SerializationConfig"
factory-bean="jacksonObjectMapper" factory-method="getSerializationConfig" >
</bean>

2)自定义映射器CustomObjectMapper

public >CustomObjectMapper extends ObjectMapper {
public CustomObjectMapper() {
super();
conp(Feature.WRITE_DATES_AS_TIMESTAMPS, false);
setDateFormat(new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)"));
}
}

5、使用@JsonFormat实现定义时间日期格式

1)在序列化对象的方法上使用@JsonFormat

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public DateTime getDate() {
return date;
}

2)使用ObjectMapper序列化

   ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JodaModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
ObjectWriter ow = mapper.writer();
try {
String logStr = ow.writeValueAsString(log);
outLogger.info(logStr);
} catch (IOException e) {
logger.warn("JSON mapping exception", e);
}


特别声明:本站部分内容收集于互联网是出于更直观传递信息的目的。该内容版权归原作者所有,并不代表本站赞同其观点和对其真实性负责。如该内容涉及任何第三方合法权利,请及时与824310991@qq.com联系,我们会及时反馈并处理完毕。