Jackson에서 사용자 정의 직렬 변환기 사용
Jackson은 유연성과 성능으로 유명한 인기 있는 Java JSON 처리 라이브러리입니다. 특정 직렬화 요구 사항을 처리하려면 사용자 지정 직렬 변환기를 사용할 수 있습니다. 이 기사에서는 Jackson을 사용하여 사용자 정의 직렬 변환기를 생성하고 활용하는 방법에 대한 단계별 가이드를 제공합니다.
User와 Item이라는 두 개의 Java 클래스가 있는 시나리오를 생각해 보세요. User와 Item 모두에 대한 사용자 정의 직렬화 규칙을 지정하여 Item 개체를 JSON으로 직렬화하려고 합니다.
Item에 대한 사용자 정의 직렬 변환기를 생성하려면 JsonSerializer
public class ItemSerializer extends JsonSerializer<Item> { @Override public void serialize(Item value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeNumberField("id", value.id); jgen.writeNumberField("itemNr", value.itemNr); jgen.writeNumberField("createdBy", value.user.id); jgen.writeEndObject(); } }
그러나 사용자 정의 직렬 변환기를 직접 등록하면 오류가 발생할 수 있습니다. 대신 SimpleModule을 사용하여 등록해야 합니다.
ObjectMapper mapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null)); simpleModule.addSerializer(new ItemSerializer()); mapper.registerModule(simpleModule);
마지막으로 ObjectMapper를 사용하여 사용자 정의 직렬화 규칙을 적용하여 Item 개체를 JSON으로 직렬화할 수 있습니다.
또는 처리를 위해 Java 객체의 날짜 필드에서 다음과 같은 사용자 정의 직렬 변환기를 만들 수 있습니다.
public class CustomDateSerializer extends SerializerBase<Date> { public CustomDateSerializer() { super(Date.class, true); } @Override public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd yyyy HH:mm:ss 'GMT'ZZZ (z)"); String format = formatter.format(value); jgen.writeString(format); } }
By 날짜 필드에 @JsonSerialize(= CustomDateSerializer.class 사용)로 주석을 추가하면 사용자 정의 직렬화가 자동으로 적용됩니다.
위 내용은 Java에서 효율적인 JSON 처리를 위해 Jackson과 함께 사용자 정의 직렬 변환기를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!