Java使用JSON實現(xiàn)處理中文亂碼和Date格式
JSON中文亂碼
如果出現(xiàn)亂碼,我們需要設(shè)置他的編碼格式為utf-8,以及它返回的類型,通過@RequesMapping的produces屬性來實現(xiàn),代碼如下
produces:指定響應(yīng)體返回類型和編碼
JSON處理Date格式
@RequestMapping(value = "/date1" )
@ResponseBody
public String date1() throws JsonProcessingException {
//聲明時間日期 注意是util下的
Date date = new Date();
//打印默認時間日期格式 Tue Feb 08 21:36:27 CST 2022
System.out.println(date);
//發(fā)現(xiàn)問題 時間默認返回的json字符串變成了時間戳類型的格式 Timestamp 1644327387386
return new ObjectMapper().writeValueAsString(date);
}發(fā)現(xiàn)問題:時間默認返回的json字符串變成了時間戳類型的格式 Timestamp 1644327387386
處理問題:如何讓它不返回時間戳?如何時間格式化問題
//關(guān)閉ObjectMapper的時間戳功能 通過objectMapper的configure方法關(guān)閉時間戳功能
**ObjectMapper objectMapper=new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
**SimpleDateFormat simpleDateFormat = new SimpleDateFormat( “yyyy-MM-dd HH:mm:ss” );
**objectMapper.setDateFormat(simpleDateFormat);
@RequestMapping(value = "/date2" )
@ResponseBody
public String date2() throws JsonProcessingException {
//1 如何讓它不返回時間戳? 通過objectMapper的configure方法關(guān)閉時間戳功能
ObjectMapper objectMapper=new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//2 時間格式化問題 自定義日期格式對象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
//3 讓objectMapper指定日期格式為simpleDateFormat
objectMapper.setDateFormat(simpleDateFormat);
//聲明Date
Date date = new Date();
//格式化日期并輸出
System.out.println(simpleDateFormat.format(date));//2022-02-08 22:01:12
return objectMapper.writeValueAsString(date);//"2022-02-08 22:01:12"
}封裝JSON工具日期轉(zhuǎn)化工具類
上述代碼冗余 我們把公共代碼提取出來進行封裝成工具類,下次使用直接調(diào)用即可
工具類和公共方法
package com.wyh.util;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import java.util.Date;
import java.text.SimpleDateFormat;
/**
* @program: SpringBoot-Ajax-JSON
* @description: JSON日期格式化封裝類
* @author: 魏一鶴
* @createDate: 2022-02-08 22:07
**/
public class JSONDateUtil {
//重載 把時間戳也進行封裝
//如果沒有自定義時間格式的話就使用我們默認的yyyy-MM-dd HH:mm:ss"
//如果調(diào)用方法在參數(shù)列表指明了自定義時間格式的話就使用參數(shù)列表的時間格式
public static String JSONFormatDateUtil(Object object){
return JSONFormatDateUtil(object, "yyyy-MM-dd HH:mm:ss" );
}
// JSON轉(zhuǎn)換日期的公共方法,直接傳遞Date類型的參數(shù)使用ObjectMapper進行處理 需要拋出異常 得到格式化好之后的json日期類型
// 把方法用static進行修飾是為了不用創(chuàng)建工具類對象就能直接通過“.”進行公共方法的調(diào)用
public static String JSONFormatDateUtil(Object object,String dateFormat){
//1 創(chuàng)建ObjectMapper工具類
ObjectMapper objectMapper=new ObjectMapper();
//2 通過ObjectMapper類的configure方法關(guān)閉時間戳功能
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//3 創(chuàng)建時間格式化SimpleDateFormat類 自定義日期格式對象
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
//4 把自定義格式化好之后的日期類型給objectMapper的setDateFormat去用,用來轉(zhuǎn)換時間格式
objectMapper.setDateFormat(simpleDateFormat);
//5 json轉(zhuǎn)換時間格式得到j(luò)son字符串日期類型
//封裝的時候盡量不要拋異常而是捕獲異常 不然每次調(diào)用這個方法都要在其他地方進行拋異常
String JSONDate = null;
try {
JSONDate = objectMapper.writeValueAsString(object);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
//6 返回最終處理好的json字符串日期類型
return JSONDate;
}
}使用工具類和公共方法
//使用工具類和公共方法
@RequestMapping(value = "/date3" )
@ResponseBody
public String date3() {
//聲明Date
Date date = new Date();
//使用工具類的公共方法把date進行傳參轉(zhuǎn)換格式
String JSONDate = JSONDateUtil.JSONFormatDateUtil(date);
//返回json日期類型
return JSONDate; //"2022-02-08 22:31:11"
}
}
//使用工具類
@RequestMapping(value = "/date3" )
@ResponseBody
public String date3() {
//聲明Date
Date date = new Date();
//使用工具類的公共方法把date進行傳參轉(zhuǎn)換格式
String JSONDate = JSONDateUtil.JSONFormatDateUtil(date, "yyyy" );
//返回json日期類型
return JSONDate; //"2022"
}
//使用工具類
@RequestMapping(value = "/date3" )
@ResponseBody
public String date3() {
//聲明Date
Date date = new Date();
//使用工具類的公共方法把date進行傳參轉(zhuǎn)換格式
String JSONDate = JSONDateUtil.JSONFormatDateUtil(date, "yyyy-MM-dd" );
//返回json日期類型
return JSONDate; //"2022-02-08"
}到此這篇關(guān)于Java使用JSON實現(xiàn)處理中文亂碼和Date格式的文章就介紹到這了,更多相關(guān)JSON處理中文亂碼和Date格式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA的Swing可視化插件JFormDesigner詳解
JFormDesigner是一個專業(yè)的軟件應(yīng)用程序,專門用于幫助您開發(fā)Java?Swing用戶界面,而無需具備編程技能。它可作為獨立實用程序使用,也可以將其用作各種IDE的插件,本文給大家介紹idea?Swing可視化插件,感興趣的朋友一起看看吧2022-06-06
SpringBoot解決循環(huán)調(diào)用問題
作者在將SpringBoot從1.5版本升級至2.6版本,并遷移至阿里云上運行后,遇到了循環(huán)調(diào)用問題,在Jetty容器中運行沒問題,但在Tomcat容器中就出現(xiàn)了循環(huán)引用問題,原因是SpringBoot 2.6不鼓勵循環(huán)引用,暴露出該問題,作者提供了兩種解決思路2024-10-10
Java設(shè)計模式 模板模式及應(yīng)用場景解析
這篇文章主要介紹了Java設(shè)計模式 模板模式及應(yīng)用場景解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07
Springboot使用maven打包指定mainClass問題
這篇文章主要介紹了Springboot使用maven打包指定mainClass問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
Java設(shè)置session超時的幾種方式總結(jié)
這篇文章主要介紹了Java設(shè)置session超時的幾種方式總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-07-07
基于eclipse-temurin鏡像部署spring boot應(yīng)用的實現(xiàn)示例
本文提供了基于eclipse-temurin鏡像部署Spring Boot應(yīng)用的詳細實現(xiàn)示例,通過使用Docker鏡像,可以輕松地創(chuàng)建和管理Spring Boot應(yīng)用程序的容器化環(huán)境,感興趣的可以了解一下2023-08-08
java list,set,map,數(shù)組間的相互轉(zhuǎn)換詳解
這篇文章主要介紹了java list,set,map,數(shù)組間的相互轉(zhuǎn)換詳解的相關(guān)資料,這里附有實例代碼,具有參考價值,需要的朋友可以參考下2017-01-01

