1. 程式人生 > 其它 >jackson封裝成將資料轉化為json格式的工具類(包括時間)

jackson封裝成將資料轉化為json格式的工具類(包括時間)

技術標籤: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);
    }

}

測試結果:
在這裡插入圖片描述