簡體   English   中英

帶有Spring3的Jersey2:抽象類JSON序列化和缺少的屬性

[英]Jersey2 with Spring3: Abstract class JSON serialization and missing properties

我正在使用Jersey-spring3 v2.17

一切正常。 從REST服務序列化的對象已正確以JSON格式公開。

僅抽象類中的對象未正確序列化。 在JSON對象中僅存在並正確定義了具體類的類型。

有關我的配置的一些信息:Application配置類中的Jersey / Jackson配置:

register(JacksonFeature.class);

抽象類:

    @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")  
    @JsonSubTypes({  
            @Type(value = Dog.class, name = "dog"), 
            @Type(value = Cat.class, name = "cat"), 
            @Type(value = Horse.class, name = "horse") })
    public abstract class Animal {
private String name;
private String description
    ...

當前以這種格式輸出(不存在對象屬性)

[{"type":"dog"},{"type":"cat"},{"type":"horse"}]

有什么想法可以解決有關JSON輸出中缺少屬性的問題?

我建議在要在抽象類中序列化的每個屬性上添加@JsonProperty 另外,我建議在類上使用@JsonPropertyOrder來控制序列化字段的順序。

需要注意的是,屬性順序始終是JsonTypeInfo.As.PROPERTY的type屬性始終列在最前面,無論您將@JsonPropertyOrder放入@JsonPropertyOrder 如果您的子類實際上通過getter提供類型,則可以使用JsonTypeInfo.As.EXISTING_PROPERTY在這種情況下,如果我沒有記錯的話,甚至可以控制該屬性的順序。 JsonTypeInfo.As.EXISTING_PROPERTY功能的支持已添加到jackson-databind-2.5.0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM