2013-03-22 58 views
1

我正在使用Jackson 2.1.4並想要序列化擴展Event類的對象集合,並且JSON必須包含用於多態性目的的類名稱。我在Event上放了一個@JsonTypeInfo註解,但不幸的是我不能使用CLASS作爲策略,因爲我的對象實例化模式是「new FooEvent(){{bar = someValue;}}」,它將創建匿名內部類。我想在JSON中輸入「FooEvent」作爲類型,而不是匿名內部類。如何在Jackson上使用自定義id序列化程序?

好像我需要的是要做到這一點:

@JsonTypeInfo(use= JsonTypeInfo.Id.CUSTOM, include= JsonTypeInfo.As.PROPERTY, property="type") 

但我怎麼註冊自己的自定義ID串將輸出類的名字嗎?

回答

1

想通了如何解決這個問題:基本上在@JsonTypeInfo的同一個類中添加一個@JsonTypeIdResolver註釋,然後實現它可以引用的解析器。 Here's我的樣子。它基本上只是刪除匿名內部類如果存在。

+1

嗨Rickard!不幸的是你的例子不再是在線的,當我試圖想出我自己的版本時(我擴展了'TypeIdResolverBase'),我在運行時得到這個異常,因爲沒有可用的空構造函數,所以無法實例化。任何幫助將不勝感激! – 2013-09-09 09:54:12

相關問題