SpringBoot使用@JSONField(format = "yyyy-MM-dd HH:mm:ss")無效的問題


SpringBoot使用@JSONField(format = "yyyy-MM-dd HH:mm:ss")無效的問題

實體類中:
@Temporal(TemporalType.TIMESTAMP)
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@Column(name="V_DATE")
private Date vdate;

 

1.改為使用JsonFormat(如果JsonFormat也失效,可以試試下面其他方法)

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")

 

2.使用JSON規范:
1)導入<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
2)在自己的XXXApplication.java里添加:
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
  // 1. 需要定義一個converter轉換消息的對象
  FastJsonHttpMessageConverter fasHttpMessageConverter =
  new FastJsonHttpMessageConverter();

  // 2. 添加fastjson的配置信息,比如:是否需要格式化返回的json的數據
  FastJsonConfig fastJsonConfig = new FastJsonConfig();
  fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

  // 3. 在converter中添加配置信息
  fasHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
  HttpMessageConverter<?> converter = fasHttpMessageConverter;
  //解決中文亂碼
  List<MediaType> fastMediaTypes = new ArrayList<>();
  fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
  fasHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);

  return new HttpMessageConverters(converter);
}

或者:

@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
  FastJsonHttpMessageConverter fasHttpMessageConverter =
  new FastJsonHttpMessageConverter();
  fasHttpMessageConverter.setDateFormat("yyyy-MM-dd HH:mm:ss");
  return new HttpMessageConverters(fasHttpMessageConverter);

}


解決了時間問題,但是對我的一些其他Json格式的內容有影響,前台可能會獲取不了一些數據

方法:

  將fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

  改為fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat,SerializerFeature.DisableCircularReferenceDetect);

3.在vue中使用攔截器:
1)全局使用:
Vue.filter('dateFormat',function(dataStr,pattern=''){
  console.log('調用quan有的');
  var dt = new Date(dataStr);
  var y = dt.getFullYear();
  var m = dt.getMonth()+1;
  var d = dt.getDate();
  if (pattern.toLowerCase() == 'yyyy-mm-dd') {
    return `${y}-${m}-${d}`;
  }else{
    var hh = dt.getHours();
    var mm = dt.getMinutes();
    var ss = dt.getSeconds();
    return `${y}-${m}-${d} ${hh}:${mm}:${ss}` ;
  }
})

2)局部使用:
export default {
  data() {
    ...
  },
  filters:{
    dformat(hirdate){
      var dt = new Date(hirdate);
      var y = dt.getFullYear();
      var m = dt.getMonth()+1;
      var d = dt.getDate();
      var hh = dt.getHours();
      var mm = dt.getMinutes();
      var ss = dt.getSeconds();
      return `${y}-${m}-${d} ${hh}:${mm}:${ss}` ;
    }

  }

}
使用攔截器的調用方式即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM