public static final Jdk8DateCodec instance = new Jdk8DateCodec();
private DateFormat dateFormat;
private String dateFormatPattern;
SerializeConfig增加序列化配置时,直接调用instance,配置根本没有传递进去

Jdk8DateCodec初始化时直接调用无参构造,导致下方两个构建日期格式的属性没有被设置,请问怎么设置才能在Jdk8DateCodec被实例化时增加日期格式?
FastJsonConverter调用了FastJsonView的renderMergedOutputModel方法,里面调用了JSON的静态方法

但是JSON静态类里面创建serializer时只设置了setFastJsonConfigDateFormatPattern,但是Jdk8DateCodec是使用的dateFormat,知道Java8的time包比较复杂,但是这种不通用的设置实在是比较烦心

没办法,没人处理,我先提供自己的实现,紧急处理一下
第一步:先自定义一个Jdk8DateCodec,集成CustomizeJdk8DateCodec,重写write方法就行了,只需要一点点修改
serializer.setDateFormat("yyyy-MM-dd HH:mm:ss");
public class CustomizeJdk8DateCodec extends Jdk8DateCodec {
public static final CustomizeJdk8DateCodec instance = new CustomizeJdk8DateCodec();
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
serializer.setDateFormat("yyyy-MM-dd HH:mm:ss");
super.write(serializer, object, fieldName, fieldType, features);
}
}
第二部
配置FastJsonHttpMessageConverter *时,覆盖SerializeConfig*关于Java8时间处理的处理器
public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {
FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.PrettyFormat);
fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
SerializeConfig serializeConfig = fastJsonConfig.getSerializeConfig();
try {
serializeConfig.put(Class.forName("java.time.LocalDateTime"), CustomizeJdk8DateCodec.instance);
serializeConfig.put(Class.forName("java.time.LocalDate"),CustomizeJdk8DateCodec.instance);
} catch (Exception e) {
logger.error("非Java8以上版本!");
}
fastConverter.setFastJsonConfig(fastJsonConfig);
return fastConverter;
}
第三步:测试,通过....
Most helpful comment
没办法,没人处理,我先提供自己的实现,紧急处理一下
第一步:先自定义一个Jdk8DateCodec,集成CustomizeJdk8DateCodec,重写write方法就行了,只需要一点点修改
serializer.setDateFormat("yyyy-MM-dd HH:mm:ss");第二部
配置FastJsonHttpMessageConverter *时,覆盖SerializeConfig*关于Java8时间处理的处理器
第三步:测试,通过....