我的應用程式中有一個名為 Annotation 的抽象類,它只包含一個表示 Annotation 型別的列舉欄位。我有兩個類,LinkAnnotation 和 TextAnnotation,它們擴展了 Annotation。兩者都是簡單的類,帶有一些字串欄位,表示某些文本中每種注釋型別的需求略有不同。
我有一個名為 AnnotatedString 的類,它具有以下結構:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AnnotatedString {
private String rawContent;
private Boolean hasAnnotations;
private Set<?> annotations = new HashSet<>();
}
我試圖將注釋欄位配置如下:
private Set<Annotation> annotations = new HashSet<>();
private Set<? extends Annotation> annotations = new HashSet<>();
private Set<?> annotations = new HashSet<>();
但是在每種情況下,當我從我的 RestController GetMapping 方法回傳包含 AnnotatedString 的物件時,我只看到 JSON 中抽象 Annotation 類的型別欄位,而沒有看到子類中的任何欄位。我希望在我的 JSON 中看到一個 JSON 物件陣列,其中的欄位對應于 Set 實際包含的 Java 型別。這對 Spring Boot 是否可行,如果可以,我將如何設定它?
uj5u.com熱心網友回復:
正如Brendon Dugan在他的評論中指出的那樣,JsonTypeInfo在父類上添加use屬性 equal的注釋JsonTypeInfo.Id.MINIMAL_CLASS可確保具有最小路徑的 Java 類名將用作父類的子類的型別識別符號。因此,正確的子型別別將被添加到集合中包含的所有物件中Set,從而解決了問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/479840.html
