springboot中日期格式转换问题

springboot中多数情况下在控制层会使用@RestController注解返回json格式的数据。日期格式不处理的话会返回long型的时间戳。

简单的办法是在application.yml文件中添加

springboot中日期格式转换问题_第1张图片

spring:
    jackson:
      date-format: yyyy-MM-dd HH:mm:ss
      time-zone: GMT+8
 
  
但是上面的方法用的是jackson
有时候我们使用的json转换工具是fastjson。这时候fasjson会覆盖注释的转换方法
就需要使用重写FastJsonHttpMessageConverter转换类了
在代码中添加如下代码
@Configuration
public class FastJsonHttpDateConverter  extends FastJsonHttpMessageConverter {

    private static SerializeConfig mapping = new SerializeConfig();
    private static String dateFormat;
    static {
        dateFormat = "yyyy-MM-dd HH:mm:ss";
        mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
    }

    @Override
    protected void writeInternal(Object obj, HttpOutputMessage outputMessage)
            throws IOException, HttpMessageNotWritableException {
        // TODO Auto-generated method stub

        OutputStream out = outputMessage.getBody();
        String text = JSON.toJSONString(obj, mapping, this.getFeatures());
        byte[] bytes = text.getBytes(this.getCharset());
        out.write(bytes);
    }

}

你可能感兴趣的:(spring,boot)