Deserializador personalizado único para todos los objetos como sus identificadores u objetos completos incrustados durante POST / PUT
@Entity
public Product {
@Id
public int id;
public String name;
@ManyToOne(cascade = {CascadeType.DETACH} )
Category category
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.DETACH} )
Set<Category> secondaryCategories;
}
y esta entidad:
@Entity
public Category {
@Id
public int id;
public String name;
}
Me gustaría poder enviar una POST con json
{ name: "name", category: 2, secondaryCategories: [3,4,5] }
del lado del cliente
y poder ser deserializado como:
{ name: "name", category: {id: 2 }, secondaryCategories: [{id: 3}, {id: 4}, {id: 5}] }
en caso de que fuera enviado como
{ name: "name", category: {id: 2 }, secondaryCategories: [{id: 3}, {id: 4}, {id: 5}] }
Me gustaría que siguiera funcionando como ahora
¿Qué tipo de anotación y deserializador personalizado necesito? Con suerte, el deserializador puede funcionar para todos los objetos posibles que tienen id como propiedad
¡Gracias!
Editar
Ver los zafrost preferidos@JsonCreator
responder (https://stackoverflow.com/a/46618366/986160)Ver mi respuesta completa (https://stackoverflow.com/a/46618193/986160) para extenderStdDeserializer
y usando la deserialización predeterminada a través deObjectMapper