Jackson에서 사용자 정의 직렬 변환기를 활용하는 방법
Jackson에서는 사용자 정의 직렬 변환기를 활용하면 특정 클래스에 대한 맞춤형 JSON 직렬화가 가능합니다.
사용자 정의 만들기 Serializer
Item 클래스에서 객체를 직렬화하려면 사용자 정의 직렬 변환기를 생성합니다.
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.createdBy.id); jgen.writeEndObject(); } }
사용자 정의 직렬 변환기 등록
생성 후 시리얼라이저에 등록해야 합니다. Jackson:
SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null)); simpleModule.addSerializer(new ItemSerializer()); mapper.registerModule(simpleModule);
Handling Type Registration
Jackson에서 누락된 유형 처리로 인해 오류가 발생합니다. 유형을 명시적으로 처리하여 이 문제를 해결하세요.
public class ItemSerializer extends JsonSerializer<Item> { @Override public void serialize(Item value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { // ... (Serialization code) } @Override public Class<Item> handledType() { return Item.class; } }
Jackson으로 직렬화
사용자 정의 직렬 변환기를 등록한 상태에서 평소와 같이 Item 개체를 직렬화합니다.
StringWriter writer = new StringWriter(); try { mapper.writeValue(writer, myItem); } catch (JsonGenerationException | JsonMappingException | IOException e) { e.printStackTrace(); }
사용자 예시 직렬화
사용자 정의 직렬화 전략으로 사용자 개체를 직렬화하려면 유사한 직렬화 도구를 생성하고 이를 Jackson에 등록하세요.
사용자 정의 직렬화 도구는 개체의 JSON 표현을 제어하는 데 유연성을 제공한다는 점을 기억하세요. , 특정 직렬화 요구 사항을 충족합니다.
위 내용은 맞춤형 JSON 직렬화를 위해 Jackson에서 사용자 정의 직렬 변환기를 생성하고 등록하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!