[英]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.