java json jackson

java - Jackson deserializa JsonIdentityReference(alwaysAsId=true)



(1)

Continuando con esta pregunta: pregunta aquí

@JsonIdentityReference(alwaysAsId = true) y @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class) funciona muy bien desde el extremo de Serialización, pero no tan bien cuando llega el momento de deserializar ya que no puede resolver la referencia del ID de Objeto.

¿Hay una manera de conseguir que esto deserialice? Escribir un deserializador personalizado parece una exageración.


En lugar de un deserializador personalizado, puede usar un deserializador de configuración simple:

public class Container { @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id") @JsonIdentityReference(alwaysAsId = true) private Foo foo; public Foo getFoo() { return foo; } public Container setFoo(Foo foo) { this.foo = foo; return this; } @JsonProperty("foo") public void setFoo(String id) { foo = new Foo().setId(id); } }

La cadena de ejemplo de {"foo":"id1"} se serializa correctamente con este método en Jackson 2.5.2