嗨我有幾個嵌入對方的UI對象。實例1:如何更改JsonView的特定屬性
class CarUI {
public UserUI user;
public UserUI agent;
....
public UserUI getUser() {
return user;
}
public UserUI getAgent() {
return agent;
}
}
class UserUI {
@JsonView({Views.Public.class,Views.Private.class})
public String name;
@JsonView({Views.Private.class})
public String phone;
...
}
正如你可以看到,如果我序列UserUI作爲公共我會暴露出唯一的名字,但對私人,我會公開所有領域。
這裏是我的問題:當我序列化對象CarUI我要揭露唯一的名字爲「用戶」和兩個姓名+手機「代理」。這基本上意味着在getter()的getter我想要更改JsonView Views.Public.class和getAgent()我想將其更改爲Views.Private.class
是否有方法來覆蓋JsonView in getters使所有返回對象的層次結構現在使用這個新的JsonView序列化?
編輯 如下所示,你可以用JsonView繼承來解決我的例子#1。什麼更通用。下面是實施例#2:
class CarUI {
public UserUI user;
public UserUI agent;
....
public UserUI getUser() {
return user;
}
public UserUI getAgent() {
return agent;
}
}
class UserUI {
@JsonView({Views.Public.class,Views.Private.class})
public String name;
@JsonView({Views.Private.class})
public String phone;
@JsonView({Views.Public.class})
public String avatarUrl;
...
}
在這個例子中Id喜歡用於用戶爲代理和名稱+ avatarUrl顯示名+電話。
謝謝。這將適用於2個JsonView在屬性上重疊的示例。如果公共擁有私人沒有的財產並且與之相反,該怎麼辦?參見上面的例子#2。 –
編輯我的答案。試圖在@JsonView註釋中使用多個類,但沒有運氣。 – Ghokun