jackson封裝成將資料轉化為json格式的工具類(包括時間)
阿新 • • 發佈:2021-01-20
技術標籤:java
首先要引入jackson依賴
<!-- json解析工具-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.2</version>
</dependency>
如果是maven構建的web工程的話,要將該依賴加入到lib包下面,否則執行時會出錯(不知道的看這個)
然後在springmvc的配置檔案中配置解決亂碼問題的程式碼
<!--解決json 亂碼配置-->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="true">
<bean class="org.springframework.http.converter.StringHttpMessageConverter" >
<constructor-arg value="UTF-8"/>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="objectMapper">
< bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
<property name="failOnEmptyBeans" value="false"/>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
然後複製下面封裝好的工具類
public class JsonUtils {
//過載
public static String getJson(Object object) throws JsonProcessingException {
return getJson(object,"yyyy-MM-dd HH:mm:ss");
}
//object為要轉化為json格式的物件,dateFormat為要轉化的日期格式如"yyyy-MM-dd HH:mm:ss"
public static String getJson(Object object,String dateFormat) throws JsonProcessingException {
//jackson中的轉化json函式
ObjectMapper mapper=new ObjectMapper();
//不使用時間戳的方式
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS,false);
//自定義日期的格式
SimpleDateFormat sdf=new SimpleDateFormat(dateFormat);
//將SimpleDateFormat轉化後的日期格式定義為jackson的日期輸出格式
mapper.setDateFormat(sdf);
//如果object不是時間型別的物件,則上面的設定不起作用,還是直接把Object物件轉化為json串了
return mapper.writeValueAsString(object);
}
}
測試程式碼:
//@Controller會直接被檢視解析器解析
//返回json字串註解要@Controller和@ReponseBody一起使用,或者只使用@RestController註解也可以
@Controller
public class UserController {
//呼叫JsonUtils工具類
@RequestMapping("/j3")
//該註解返回一個json字串,不會走檢視解析器
@ResponseBody
public String json3() throws JsonProcessingException {
User user = new User("tanjiu", 13, "男");
Date date = new Date();
//三種方式呼叫工具類
// return JsonUtils.getJson(user);
// return JsonUtils.getJson(date,"yyyy-MM-dd HH:mm:ss");
return JsonUtils.getJson(date);
}
}
測試結果: