2015-02-24 73 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

相關問題