【发布时间】:2015-07-13 22:12:33
【问题描述】:
我正在尝试从另一个调用自定义 JsonDeserializer,但我不知道如何。
我在我的实体中使用@JsonDeserialize 注释:
@JsonDeserialize(using = BobDeserializer.class)
class Bob {
private Integer number;
...
}
@JsonDeserialize(using = AliceDeserializer.class)
class Alice {
private Bob bob;
...
}
我的反序列化器是:
class BobDeserializer extends StdDeserializer<Bob> {
public Bob deserialize(JsonParser parser, DeserializationContext context) throws IOException {
JsonNode node = parser.getCodec().readTree(parser);
Integer number = node.get("number").asInt();
Bob bob = new Bob();
bob.setNumber(number);
return bob;
}
}
class AliceDeserializer extends StdDeserializer<Alice> {
public Alice deserialize(JsonParser parser, DeserializationContext context) throws IOException {
JsonNode node = parser.getCodec().readTree(parser);
Bob bob = ???????; // How to get Bob calling BobDeserializer to deserialize node.get("bob")?
Alice alice = new Alice();
alice.setBob(bob);
return alice;
}
}
AliceDeserializer 接收如下 JSON 输入:
{
"bob": {
"number": 2
}
}
我需要从 AliceDeserializer 调用 BobDeserializer 的帮助。 我想为此使用自动机制,而不是使用@Autowired 注入反序列化器。
谢谢
【问题讨论】: