[英]Jackson JSON mapping of superclass value
I am using Jackson 1.8.3 in a Spring application to map Java Objects to JSON.
我的一個 Java Class( Child
)擴展了一個超級 class( Parent
),它是庫的一部分,所以我無法修改它。 (特別是我無法添加注釋。)
我正在使用@JsonAutoDetect(JsonMethod.NONE)
因為我只需要來自 object 的一小組字段,而不是使用@JsonProperty
。
class Parent {
public long getId(){...};
...
}
@JsonAutoDetect(JsonMethod.NONE)
class Child extends Parent {
@JsonProperty
private String title;
}
但是我需要的字段之一是來自超類的字段id
,但我不知道如何告訴Jackson注意這個字段,而不修改父class(因為我不能修改它)。
如果將注釋放在 getter 上(而不是直接放在字段上),則可以覆蓋getId()
方法(如果它在超類中不是最終的)並為其添加注釋。
class Parent {
public long getId(){...};
...
}
@JsonAutoDetect(JsonMethod.NONE)
class Child extends Parent {
private String title;
@JsonProperty
public String getTitle() {...}
@Override
@JsonProperty
public long getId() {
return super.getId();
}
}
我無法添加注釋
您可以使用 mix-ins 添加注釋。 有關詳細信息,請參閱http://wiki.fasterxml.com/JacksonMixInAnnotations 。
根據 class 字段/方法結構的 rest 是什么,另一種可能有效的方法是通過 ObjectMapper 配置字段/方法的可見性訪問。 下面一行演示了如何進行這樣的配置,不一定是你需要的具體配置。
mapper.setVisibilityChecker(mapper.getVisibilityChecker().withFieldVisibility(Visibility.ANY));
我正在使用@JsonAutoDetect(JsonMethod.NONE),因為我只需要來自 object 的一小組字段,而我使用的是 @JsonProperty
我應該意識到這是可能的。 我必須更新我的博客文章。 謝謝你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.