Phi*_*rdi 4 java json jaxb jackson
是否可以使用Jackson将JSON反序列化为基于JSON内容的两种类型之一?
例如,我有以下Java(技术上是Groovy,但这并不重要)接口和类:
interface Id {
Thing toThing()
}
class NaturalId implements Id {
final String packageId
final String thingId
Thing toThing() {
new PackageIdentifiedThing(packageId, thingId)
}
}
class AlternateId implements Id {
final String key
Thing toThing() {
new AlternatelyIdentifiedThing(key)
}
}
Run Code Online (Sandbox Code Playgroud)
我将收到的JSON将如下所示:
此JSON应映射到NaturalId {"packageId": "SomePackage", "thingId": "SomeEntity"}
此JSON应映射到AlternateId {"key": "SomeUniqueKey"}
有没有人知道我怎么能用Jackson 2.x完成这个,而不包括类型id?
这些只是实施的两个类Id吗?如果是这样,你可以写一个IdDeserializer类,并把@JsonDeserialize(using = IdDeserializer.class)该上的Id接口,以及解串器会看着JSON,并确定哪些对象进行反序列化到.
编辑:JsonParser是流媒体所以它应该看起来像这样:
public Id deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException {
ObjectNode node = jp.readValueAsTree();
Class<? extends Id> concreteType = determineConcreteType(node); //Implement
return jp.getCodec().treeToValue(node, concreteType);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6176 次 |
| 最近记录: |