2014-07-11 50 views
6

我熟悉正常的多態反序列化的東西,基於某個字段的字符串值反序列化一個對象。例如:整數字段而不是字符串的傑克遜多態反序列化

@JsonSubTypes(
      { 
       @JsonSubTypes.Type(value = LionCage.class, name = "LION"), 
       @JsonSubTypes.Type(value = TigerCage.class, name = "TIGER"), 
      } 
     ) 
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type") 

如果傳入對象的「類型」字段是整數而不是字符串,是否有任何方法可以做基本相同的事情?所以在上面的例子中,「LION」和「TIGER」將是1和2.不管出於什麼原因,我都無法弄清楚這一點。

另外,我應該怎樣才能弄清楚這一點?似乎它應該是明顯的東西。

+0

只要您的模型類使用外部屬性的字符串,整數就可以。傑克遜很聰明,似乎將整數轉換爲一個字符串給你。我在這裏做了非常類似的事情,如果你對這些細節感興趣的話:http://stackoverflow.com/questions/38501574/rules-for-jersey-to-parse-json – pandaadb

回答

0

不,這不是通過註釋選項。 TypeIdResolver接口接受並返回字符串。你可以用一個使用Jackson的流API的自定義分析器/序列化器來完成,但是這似乎有很多工作要將它切換到數字字段。如果別人的系統需要它,我只會這樣做。如果我擁有所有東西,我只會使用您在問題中發佈的設置。

相關問題