Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào chúng ta có thể ánh xạ nhiều định dạng ngày tháng bằng cách sử dụng Jackson trong Java?


A Jackson là một thư viện dựa trên Java và nó có thể hữu ích khi chuyển đổi các đối tượng Java sang JSON và JSON thành Java Object. Chúng tôi có thể ánh xạ nhiều định dạng ngày tháng trong thư viện Jackson bằng cách sử dụng chú thích @JsonFormat , nó là một chú thích có mục đích chung được sử dụng để định cấu hình chi tiết về cách các giá trị của thuộc tính sẽ được tuần tự hóa. @JsonFormat có ba trường quan trọng: hình dạng, mẫu, múi giờ . Hình dạng trường có thể xác định cấu trúc để sử dụng cho tuần tự hóa ( JsonFormat.Shape.NUMBER JsonFormat.Shape.STRING ), mẫu trường có thể được sử dụng trong tuần tự hóa và giải mã hóa. Đối với ngày, mẫu chứa SimpleDateFormat định nghĩa tương thích và cuối cùng là múi giờ trường có thể được sử dụng trong tuần tự hóa, mặc định là múi giờ mặc định của hệ thống.

Cú pháp

@Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER,TYPE})
@Retention(value=RUNTIME)
public @interface JsonFormat

Ví dụ

import java.io.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonDateformatTest {
   final static ObjectMapper mapper = new ObjectMapper();
   public static void main(String[] args) throws Exception {
      JacksonDateformatTest jacksonDateformat = new JacksonDateformatTest();
      jacksonDateformat.dateformat();
   }
   public void dateformat() throws Exception {
      String json = "{\"createDate\":\"1980-12-08\"," + "\"createDateGmt\":\"1980-12-08 3:00 PM GMT+1:00\"}";
      Reader reader = new StringReader(json);
      Employee employee = mapper.readValue(reader, Employee.class);
      System.out.println(employee);
   }
}
// Employee class
class Employee implements Serializable {
   @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "IST")
   private Date createDate;
   @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm a z", timezone = "IST")
   private Date createDateGmt;
   public Date getCreateDate() {
      return createDate;
   }
   public void setCreateDate(Date createDate) {
      this.createDate = createDate;
   }
   public Date getCreateDateGmt() {
      return createDateGmt;
   }
   public void setCreateDateGmt(Date createDateGmt) {
      this.createDateGmt = createDateGmt;
   }
   @Override
   public String toString() {
      return "Employee [\ncreateDate=" + createDate + ", \ncreateDateGmt=" + createDateGmt + "\n]";
   }
}

Đầu ra

Employee [
 createDate=Mon Dec 08 00:00:00 IST 1980,
 createDateGmt=Mon Dec 08 07:30:00 IST 1980
]