有条件的杰克逊json策略吗?

| 我需要使用Jackson库反序列化GeoJSON JSON对象。在这个json对象中,有一些适用的地方: 如果有
\"type\" : \"name\"  
以下json对象是一种类型。举例来说:
\"properties\": {
   \"name\": \"urn:ogc:def:crs:OGC:1.3:CRS84\"
}  
另一方面,如果有
\"type\": \"link\"  
以下json对象是另一种类型。举例来说:
\"properties\": {  
   \"href\": \"http://example.com/crs/42\",  
   \"type\": \"proj4\"  
}  
现在,我有一个PropertiesPOJO,其中包含:
private String name;  
private String href;
private String type;
当前的解决方案要求检查对象的类型,因此我们知道我们要考虑的PropertiesPOJO的哪些部分。这不是一个好习惯。我宁愿使用自定义反序列化程序来执行此操作,该反序列化程序将直接反序列化为NamePropertiesPOJO或LinkPropertiesPOJO。我的一个想法是
@JsonDeserialize(using=PropertiesDeserializer.class)
@JsonProperty(\"properties\")
NamePropertiesPOJO namePropertiesPOJO = null;

@JsonDeserialize(using=PropertiesDeserializer.class)
@JsonProperty(\"properties\")
LinkPropertiesPOJO linkPropertiesPOJO = null;
但是我得到了   发生JsonMappingException:多个   代表财产的领域   \“属性\”: 那么,还有其他方法可以使用杰克逊的注解来实现更多面向对象吗? 亲切的问候, 暴君     
已邀请:
这称为\“外部类型ID \”,尽管Jackson尚不支持(不同于将嵌入在Object中的类型标识符;在这种情况下,作为一个附加属性),但应该对此提供支持根据JACKSON-453在将来添加。它不会在1.8版本中实现,但希望在此之后发布。 GeoJSON是一个经常重复出现的用例-我希望他们选择了更通用的机制,但是由于格式的普及,这是需要优先考虑的事情。     
您应该可以通过
class Pojo {
    Map<String,String> properties;
    ...
}
然后只需从地图上读取内容即可。 同样,当您只显示没有注释的POJO时,Jackson也应该 能够自行填写正确的变量。在二传手中,您可以设置一个标志,它是1型或2型,因此可以执行
if (pojo.isType1())
    
我想简单的答案是,没有条件反序列化杰克逊json策略。 干杯, 暴君 附注:如果有人给我解决问题的方法(不是“否”),我会很乐意将答案检查传递给他!     

要回复问题请先登录注册