Benutzerdefinierte Serialisierer mit Jackson verwenden
In Ihrem Code erhalten Sie eine IllegalArgumentException, da JsonSerializer eine handledType()-Methode benötigt, um den Typ anzugeben Griffe. So implementieren Sie es korrekt mit handledType() und 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; } }
Integration mit Jackson:
Nachdem Sie den benutzerdefinierten Serializer definiert haben, müssen Sie ihn integrieren es mit Jackson. Dies kann mit einem SimpleModule erreicht werden:
ObjectMapper mapper = new ObjectMapper(); SimpleModule simpleModule = new SimpleModule("SimpleModule", new Version(1,0,0,null)); simpleModule.addSerializer(new ItemSerializer()); mapper.registerModule(simpleModule);
Jetzt können Sie den benutzerdefinierten Mapper verwenden, um Item-Objekte zu serialisieren.
Benutzerobjekte serialisieren:
Um Benutzerobjekte mit einem benutzerdefinierten Format zu serialisieren, können Sie ein separates definieren Serializer:
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; } }
Vergessen Sie nicht, es in Jackson zu integrieren:
simpleModule.addSerializer(new UserSerializer());
Das obige ist der detaillierte Inhalt vonWie implementiert man benutzerdefinierte Serialisierer mit Jacksons „handledType()' und „serialize()' richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!