Jackson API JSON 데이터 작업을 위한 여러 가지 방법을 제공합니다. Jackson API를 사용하여 Java 객체를 JSON 문자열로 변환하고 JSON 문자열에서 객체를 재구성할 수 있습니다. 맞춤 직렬 변환기 를 구현할 수 있습니다. StdSerializer 사용 클래스를 재정의해야 하며 serialize(T 값, JsonGenerator gen, SerializerProvider 공급자) 메소드, 첫 번째 인수 값 직렬화할 값을 나타냅니다(null일 수 없음 ), 두 번째 인수 gen 결과 Json 콘텐츠를 출력하는 데 사용되는 생성기와 세 번째 인수 제공자 를 나타냅니다. 개체 값을 직렬화하기 위한 직렬 변환기를 가져오는 데 사용할 수 있는 공급자를 나타냅니다.
구문
public abstract void serialize(T value, JsonGenerator gen, SerializerProvider provider) throws IOException
예시
import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.module.*;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
public class JacksonSerializeTest {
public static void main(String[] args) throws Exception {
JacksonSerializeTest test = new JacksonSerializeTest();
test.serialize();
}
public void serialize() throws Exception {
User user = new User();
user.setFirstName("Raja");
user.setLastName("Ramesh");
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(User.class, new UserSerializer());
mapper.registerModule(module);
String jsonStr = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(user); // pretty print
System.out.println(jsonStr);
}
}
// User class
class User implements Serializable {
private String firstName;
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
// UserSerializer class
class UserSerializer extends StdSerializer<User> {
public UserSerializer() {
this(null);
}
public UserSerializer(Class<User> t) {
super(t);
}
@Override
public void serialize(User value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
jgen.writeStartObject();
jgen.writeStringField("firstName", value.getFirstName());
jgen.writeStringField("lastName", value.getLastName());
jgen.writeEndObject();
}
} 출력
{
"firstName" : "Raja",
"lastName" : "Ramesh"
}