[英]Where should the JsonSubTypes be read from?
這個問題與我之前發布的另一個問題無關,因為我正在尋找有關JsonSubTypes的序列化/驗證如何工作的清晰信息
另一個問題: 使用JsonSubTypes的InvalidSchemaException,而不是我在基本接口中定義的內容
假設我有一個基類A
一個實現BaseInterface
如果我有一個子類B擴展了A ,但實現了它自己的接口,例如AlpahInterface,BetaInterface,CharlieInterface 。 這里存在問題,因為驗證失敗,因為AlphaInterface僅列出了例如LAMA,因此驗證不了解基本BaseInterface中定義的所有其他類型。
子類B僅實現AlphaInterface定義的任何內容 ,而忽略了它擴展BaseInterface的事實,也忽略了其他已實現的接口,並且顯然沒有注意B擴展了實現BaseInterface的事實。 我可以驗證這一點,因為我向AlphaInterface添加了基本接口中定義的所有子類型,並且一切正常,但是我不想在每個接口中都定義所有可能的子類型,因為它們與實現它們的類並不都相關。
我本以為將選擇擴展的A實現或所有B的實現接口,而不僅僅是清單中的第一個接口。
請有人解釋,因為我過去兩天在網上所做的所有閱讀都還沒有為我解決。 如果有人想打開討論聊天,那就太好了!
謝謝。
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@Type(value = CatTopic.class, name = "CAT"),
@Type(value = DogTopic.class, name = "DOG"),
@Type(value = FishTopic.class, name = "FISH"),
@Type(value = LamaTopic.class, name = "LAMA")
})
public interface BaseInterface {}
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@Type(value = LamaTopic.class, name = "LAMA")
})
public interface AlpahInterface extends BaseInterface {}
// Something to extend A
public class B extends A implements AlpahInterface, BetaInterface, CharlieInterface {}
我不清楚在JsonSubTypes的主要列表中應在何處讀取此代碼,但我設法解決了相關的發布問題。 最終在我的相關文章中找到了處理主要問題的方法。 公共抽象@interface JsonTypeInfo
對於JsonSubTypes中定義的每個類,需要做的是,還必須在該類@JsonTypeName(“ ClassName”)上指定,例如
@JsonTypeName("CAT")
public class CatTopic extends A implements AlpahInterface, BetaInterface, CharlieInterface {}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.