Jackson에서 사용자 정의 직렬 변환기 사용
JsonSerializer에서 유형을 지정하려면 handlerType() 메서드가 필요하기 때문에 코드에서 IllegalArgumentException을 수신합니다. 핸들. handlerType() 및 serialize()를 사용하여 올바르게 구현하는 방법은 다음과 같습니다.
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.getId()); jgen.writeNumberField("itemNr", value.getItemNr()); jgen.writeNumberField("createdBy", value.getCreatedBy().getId()); jgen.writeEndObject(); } @Override public Class<Item> handledType() { return Item.class; } }
Jackson과 통합:
사용자 정의 직렬 변환기를 정의한 후 통합해야 합니다. 잭슨과 함께. 이는 SimpleModule을 사용하여 달성할 수 있습니다:
ObjectMapper mapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null)); simpleModule.addSerializer(new ItemSerializer()); mapper.registerModule(simpleModule);
이제 사용자 정의된 매퍼를 사용하여 항목 개체를 직렬화할 수 있습니다.
사용자 개체 직렬화:
사용자 개체를 사용자 정의 형식으로 직렬화하려면 별도의 개체를 정의할 수 있습니다. 직렬 변환기:
public class UserSerializer extends JsonSerializer<User> { @Override public void serialize(User value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { jgen.writeStartObject(); jgen.writeNumberField("id", value.getId()); jgen.writeEndObject(); } @Override public Class<User> handledType() { return User.class; } }
Jackson과 통합하는 것을 잊지 마세요:
simpleModule.addSerializer(new UserSerializer());
위 내용은 Jackson의 `handledType()` 및 `serialize()`를 사용하여 사용자 정의 직렬 변환기를 올바르게 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!