SpringCloud使用FastJsonHttpMessage

2018-12-14  本文已影响0人  三个程序员之一

1.序列化到前台时时间变成时间戳,没有时间格式,SpringBoot自带的配置时间序列化格式因为已经被替换了实现类所以不在生效,需要使用fastJson的时间设置方式@JSONField(format ="yyyy-MM-dd HH:mm:ss")在实体类上加上次注解即可。

2.在序列话到前台时候fastjson遍历集合会存在对象被返回的情况,以及所有请求被拦截,但是处理不是很理想的情况,贴出配置供参考

FastJsonHttpMessageConverterCustomextends 当作一个Bean注册

public class FastJsonHttpMessageConverterCustomextends FastJsonHttpMessageConverter {

private static SetsupportedMediaTypes;

    public FastJsonHttpMessageConverterCustom() {

supportedMediaTypes =new HashSet<>();

        supportedMediaTypes.add(MediaType.APPLICATION_JSON);

        supportedMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);

    }

@Override

    public boolean canRead(Type type, Class contextClass, MediaType mediaType) {

return this.supports(contextClass) &&supportedMediaTypes.contains(mediaType);

    }

@Override

    public boolean canWrite(Type type, Class clazz, MediaType mediaType) {

return super.supports(clazz) &&supportedMediaTypes.contains(mediaType);

    }

@Override

    protected void writeInternal(Object object, HttpOutputMessage outputMessage)throws IOException, HttpMessageNotWritableException {

OutputStream out = outputMessage.getBody();

        String text = JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);

        byte[] bytes = text.getBytes("utf-8");

        out.write(bytes);

    }

}

上一篇下一篇

猜你喜欢

热点阅读