gpt4 book ai didi

json - Spring MVC 中的 Jackson Object Mapper 无法正常工作

转载 作者:行者123 更新时间:2023-12-01 05:00:19 25 4
gpt4 key购买 nike

每个具有 Date 格式的对象都被序列化为 long。

我听说我需要创建一个自定义对象映射器

所以我做到了:

public class CustomObjectMapper extends ObjectMapper {

public CustomObjectMapper() {
super();
configure(Feature.WRITE_DATES_AS_TIMESTAMPS, false);
setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));

}

}

我还将该自定义映射器注册为转换器

@Override
protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(converter());
addDefaultHttpMessageConverters(converters);
}

@Bean
MappingJacksonHttpMessageConverter converter() {
MappingJacksonHttpMessageConverter converter = new MappingJacksonHttpMessageConverter();
converter.setObjectMapper(new CustomObjectMapper());

return converter;
}

但是,它仍然不起作用,我收到了一个很长的日期。

知道我做错了什么吗?

最佳答案

你需要实现你自己的 Dateserializer,就像下面这样(从 tutorial 得到它,所以支持 Loiane,而不是我 ;-)):

package ....util.json;

import org.codehaus.jackson.JsonGenerator;
import org.codehaus.jackson.map.JsonSerializer;
import org.codehaus.jackson.map.SerializerProvider;
import org.springframework.stereotype.Component;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Component
public class JsonDateSerializer extends JsonSerializer<Date>{

private static final SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm "); // change according to your needs

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

String formattedDate = dateFormat.format(date);

gen.writeString(formattedDate);
}

}

那么您只需将以下注释添加到您的 Date-Objects 中,它就会保持良好状态:

@JsonSerialize(using = JsonDateSerializer.class)
public Date getCreated() {
return created;
}

至少它适用于 spring 3.2.4 和 jackson 1.9.13。

编辑: 考虑使用 FastDateFormat 而不是 SimpleDateFormat,因为它是线程安全的替代方案(如 Loianes 文章的评论中所述)

关于json - Spring MVC 中的 Jackson Object Mapper 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com