Jackson中JsonGenerator日期格式化示例

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatsDemo {

    /**
     *  默认情况下,Jackson 会将 java.util.Date 对象序列化为其 long 值,这是自 1970 年 1 月 1 日以来的毫秒数。
     *  然而,Jackson 也支持将日期格式化为字符串。
     *
     *  @throws JsonProcessingException
     */
    @Test
    public void test1() throws JsonProcessingException {
        Transaction transaction = new Transaction("transfer", new Date());

        ObjectMapper objectMapper = new ObjectMapper();
        String output = objectMapper.writeValueAsString(transaction);

        System.out.println(output);
    }

    /**
     *  Date 的长序列化格式对于人类来说不是很可读。
     *  因此 Jackson 也支持文本日期格式。
     *  您可以通过在 ObjectMapper 上设置 SimpleDateFormat 来指定要使用的确切 Jackson 日期格式。
     *
     *  @throws JsonProcessingException
     */
    @Test
    public void test2() throws JsonProcessingException {
        Transaction transaction = new Transaction("transfer", new Date());

        ObjectMapper objectMapper = new ObjectMapper();

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        objectMapper.setDateFormat(dateFormat);
        String output = objectMapper.writeValueAsString(transaction);

        System.out.println(output);
    }

   public class Transaction {
        private String type = null;
        private Date date = null;

        public Transaction() {
        }

        public Transaction(String type, Date date) {
            this.type = type;
            this.date = date;
        }

        public String getType() {
            return type;
        }

        public void setType(String type) {
            this.type = type;
        }

        public Date getDate() {
            return date;
        }

        public void setDate(Date date) {
            this.date = date;
        }
    }

}
上一篇:SpringBoot 字节数组自动转化为Base64格式的问题


下一篇:Spring知识点-@Configuration使用