2015-02-24 68 views
3

我们有一个包含多组Long的类。我们希望它们作为数组序列化,并且大多数客户端都这样做。Jackson - 仅针对特定的JSON使用自定义解串器

但是,我们有一个PHP客户端,可以创建集合以便以奇怪的方式进行序列化。一组具有数目4进来像这样:

"setOfNumbers": { 
    "4": 0 
}, 

自然地,杰克逊抱怨这是一个对象,而不是阵列。我想是有一个只能调用自定义解串器,如果杰克逊检测对象,其中一个Set<Long>应该

我已经试过这(仅当它们被包含在特定的类和理想。):

this.addDeserializer(Set.class, new StdDelegatingDeserializer<>(new StdConverter<Map<String, Long>, Set<Long>>() { 
     @Override 
     public Set<Long> convert(Map<String, Long> set) { 
      return parseLongs(set); 
     } 
    })); 

与此问题是,现在它期望一个对象而不是所有设置字段的数组。被反序列化的类是生成的,所以我不能添加任何注释或进行其他更改。

+0

PHP相同的名称似乎有一些JSON的创造性解释。 – chrylis 2015-02-24 22:08:29

回答

1

如果生成的类始终可以使用JSON杰克逊混合式注解尝试如本example

相关问题