Spring mvc + jackson2 返回json格式(包含日期格式解析)

  • Post author:
  • Post category:其他


写了那么多,发现白忙活了一场,原来jackson也有一个@JsonFormat注解,将它配置到Date类型的get方法上后,jackson就会按照配置的格式转换日期类型,而不自定义转换器类,欲哭无泪啊。辛苦了那么多,其实别人早已提供,只是没有发现而已。

不说了,直接上方案吧。

1.spring配置照样是这样:



  1. <


    mvc:annotation-driven


    >



2.JsonUtil可以不用了,但如果要自己从response对象输出json,那么还是可以用,但改成了这样



  1. package


    com.xxx.utils;




  2. import


    java.io.IOException;



  3. import


    java.text.SimpleDateFormat;



  4. import


    org.springframework.stereotype.Component;



  5. import


    com.fasterxml.jackson.databind.ObjectMapper;




  6. /**



  7. * json处理工具类



  8. * @author zhangle



  9. */





  10. @Component





  11. public




    class


    JsonUtil {




  12. private




    static




    final


    String DEFAULT_DATE_FORMAT=


    “yyyy-MM-dd HH:mm:ss”


    ;



  13. private




    static




    final


    ObjectMapper mapper;




  14. static


    {


  15. SimpleDateFormat dateFormat =

    new


    SimpleDateFormat(DEFAULT_DATE_FORMAT);


  16. mapper =

    new


    ObjectMapper();


  17. mapper.setDateFormat(dateFormat);

  18. }



  19. public




    static


    String toJson(Object obj) {



  20. try


    {



  21. return


    mapper.writeValueAsString(obj);


  22. }

    catch


    (Exception e) {



  23. throw




    new


    RuntimeException(


    “转换json字符失败!”


    );


  24. }

  25. }



  26. public


    <t> T toObject(String json,Class<t> clazz) {



  27. try


    {



  28. return


    mapper.readValue(json, clazz);


  29. }

    catch


    (IOException e) {



  30. throw




    new


    RuntimeException(


    “将json字符转换为对象时失败!”


    );


  31. }

  32. }

  33. }</t></t>

3.实体类的get方法就需要多一个@JsonFormat的注解配置



  1. @DateTimeFormat


    (pattern=


    “yyyy-MM-dd HH:mm:ss”


    )



  2. @JsonFormat


    (pattern=


    “yyyy-MM-dd HH:mm:ss”


    ,timezone =


    “GMT+8”


    )



  3. public


    Date getCreateTime() {



  4. return




    this


    .createTime;


  5. }


  6. @DateTimeFormat


    (pattern=


    “yyyy-MM-dd”


    )



  7. @JsonFormat


    (pattern=


    “yyyy-MM-dd”


    ,timezone =


    “GMT+8”


    )



  8. public


    Date getBirthday() {



  9. return




    this


    .birthday;


  10. }