@JsonSerialize 주석 은 필드 직렬화 중에 사용자 정의 직렬 변환기를 선언하는 데 사용됩니다. StdSeralizer 클래스를 확장하여 사용자 정의 직렬 변환기를 구현할 수 있습니다. 그리고 StdSerializer 클래스의 serialize() 메서드를 재정의해야 합니다.
@Target(value={ANNOTATION_TYPE,METHOD,FIELD,TYPE,PARAMETER}) @Retention(value=RUNTIME) public @interface JsonSerialize
다음 프로그램에서는 @JsonSerialize 주석을 사용하여 사용자 정의 직렬 변환기를 구현할 수 있습니다.
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)<strong> </strong>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; } <strong> </strong>@Override<strong> </strong> 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(); } }
{ "id" : 115, "name" : "Adithya", "languages" : "Java;Python;Scala;" }
위 내용은 Java에서 @JsonSerialize 주석을 사용하여 사용자 정의 직렬 변환기를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!