Chú thích @JsonSerialize được sử dụng để khai báo bộ tuần tự hóa tùy chỉnh trong quá trình tuần tự hóa một trường. Chúng tôi có thể triển khai bộ tuần tự tùy chỉnh bằng cách mở rộng StdSeralizer lớp. và cần ghi đè serialize () phương pháp của StdSerializer lớp học.
Cú pháp
@Target(value={ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonSerialize
Trong chương trình dưới đây, chúng tôi có thể triển khai bộ nối tiếp tùy chỉnh bằng cách sử dụng @JsonSerialize 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.ser.std.*; public class JsonSerializeAnnotationTest { public static void main (String[] args) throws JsonProcessingException, IOException { Employee emp = new Employee(115, "Adithya", new String[] {"Java", "Python", "Scala"}); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(emp); System.out.println(jsonString); } } // CustomSerializer class class CustomSerializer extends StdSerializer { public CustomSerializer(Class t) { super(t); } public CustomSerializer() { this(Employee.class); } @Override public void serialize(Employee emp, JsonGenerator jgen, SerializerProvider sp) throws IOException, JsonGenerationException { StringBuilder sb = new StringBuilder(); jgen.writeStartObject(); jgen.writeNumberField("id", emp.getId()); jgen.writeStringField("name", emp.getName()); for(String s: emp.getLanguages()) { sb.append(s).append(";"); } jgen.writeStringField("languages", sb.toString()); jgen.writeEndObject(); } } // Employee class @JsonSerialize(using=CustomSerializer.class) class Employee { private int id; private String name; private String[] languages; public Employee(int id, String name, String[] languages) { this.id = id; this.name = name; this.languages = languages; } public int getId() { return this.id; } public String getName() { return this.name; } public String[] getLanguages() { return this.languages; } @Override public String toString() { StringBuilder sb = new StringBuilder("ID: ").append(this.id).append("\nName: ").append(this.name).append("\nLanguages:"); for(String s: this.languages) { sb.append(" ").append(s); } return sb.toString(); } }
Đầu ra
{ "id" : 115, "name" : "Adithya", "languages" : "Java;Python;Scala;" }