@JsonDeserialize chú thích được sử dụng để khai báo deserializer tùy chỉnh trong khi giải mã JSON thành đối tượng Java. Chúng tôi có thể triển khai một bộ giải mã tùy chỉnh bằng cách mở rộng StdDeserializer lớp có loại chung chung là Nhân viên và cần ghi đè deserialize () phương pháp của StdDeserializer lớp học.
Cú pháp
@Target(value={ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonDeserialize
Trong chương trình bên dưới, chúng tôi có thể triển khai bộ khử không khí tùy chỉnh bằng cách sử dụng @JsonDeserialize chú thích
Ví dụ
import java.io.*; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.databind.*; import com.fasterxml.jackson.databind.annotation.*; import com.fasterxml.jackson.databind.deser.std.*; public class JsonDeSerializeAnnotationTest { public static void main (String[] args) throws JsonProcessingException, IOException { Employee emp = new Employee(115, "Adithya"); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(emp); emp = mapper.readValue(jsonString, Employee.class); System.out.println(emp); } } // CustomDeserializer class class CustomDeserializer extends StdDeserializer<Employee> { public CustomDeserializer(Class<Employee> t) { super(t); } public CustomDeserializer() { this(Employee.class); } @Override public Employee deserialize(JsonParser jp, DeserializationContext dc) throws IOException, JsonProcessingException { int id = 0; String name = null; JsonToken currentToken = null; while((currentToken = jp.nextValue()) != null) { switch(currentToken) { case VALUE_NUMBER_INT: if(jp.getCurrentName().equals("id")) { id = jp.getIntValue(); } break; case VALUE_STRING: switch(jp.getCurrentName()) { case "name": name = jp.getText(); break; default: break; } break; default: break; } } return new Employee(id, name); } } // Employee class @JsonDeserialize(using=CustomDeserializer.class) class Employee { private int id; private String name; public Employee(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } @Override public String toString() { StringBuilder sb = new StringBuilder("ID: ").append(this.id).append("\nName: ").append(this.name); return sb.toString(); } }
Đầu ra
ID: 115 Name: Adithya