Ответ 1
Вместо пользовательского десериализатора вы можете использовать простой установщик десериализатора:
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);
}
}
Пример строки {"foo":"id1"}
правильно сериализован с помощью этого метода в Jackson 2.5.2