我有一個由現有端點使用的 POJO,該端點使用 POJO 中存在的所有欄位進行回應。
但是我正在創建一個新的端點,它應該只回應同一個 POJO 的一些欄位。
我想避免復制同一個 POJO 檔案并洗掉我不需要的引數,有沒有辦法做到這一點?
這是 POJO:
public class AgentChatStatus {
private UUID activeChat;
private List<AgentChat> chatRequests; //Object with less params on new endpoint
private List<AgentChat> chatsOnHold; //Object with less params on new endpoint
private Collection<Agent> agents;
private int totalChatRequests;
private int totalChatsOnHold;
private Preferences.AgentConsoleConfig config;
// ...
}
public class AgentChat implements Payload {
private UUID id;
private String queueId;
假設我只需要在端點 2 中顯示“Id”,而在端點 1 中顯示 id 和 queueId。順便說一句,我與春天一起作業。謝謝!
uj5u.com熱心網友回復:
使用 Jackson,您可以利用 JSON 視圖。首先是創建視圖如下:
public class Views {
public static class ViewEndpoint2 { // The name can be whatever you want
}
public static class ViewEndpoint1 extends ViewEndpoint2 {
}
}
然后你需要在你的 POJO 中注釋屬性,@JsonView以便你告訴 Jackson 這些屬性應該在哪些視圖中可見:
public class AgentChatStatus {
@JsonView(Views.ViewEndpoint2.class)
private UUID activeChat;
@JsonView(Views.ViewEndpoint2.class)
private List<AgentChat> chatRequests;
@JsonView(Views.ViewEndpoint2.class)
private List<AgentChat> chatsOnHold;
@JsonView(Views.ViewEndpoint2.class)
private Collection<Agent> agents;
@JsonView(Views.ViewEndpoint2.class)
private int totalChatRequests;
@JsonView(Views.ViewEndpoint2.class)
private int totalChatsOnHold;
@JsonView(Views.ViewEndpoint2.class)
private Preferences.AgentConsoleConfig config;
}
public class AgentChat implements Payload {
@JsonView(Views.ViewEndpoint2.class)
private UUID id;
@JsonView(Views.ViewEndpoint1.class)
private String queueId;
}
最后,您需要使用相應的視圖注釋端點:
@JsonView(Views.ViewEndpoint1.class)
@RequestMapping("your-old-enpoint")
public void yourOldEndpoint() {
(...)
}
@JsonView(Views.ViewEndpoint2.class)
@RequestMapping("your-new-enpoint")
public void yourNewEndpoint() {
(...)
}
@JsonView(Views.ViewEndpoint1.class)基本上意味著在所有的性能AgentChatStatus和AgentChat和@JsonView(Views.ViewEndpoint2.class)手段只有一些(帶注釋的那些@JsonView(Views.ViewEndpoint2.class))。
您可以在https://www.baeldung.com/jackson-json-view-annotation閱讀更多相關資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/384540.html
上一篇:有人可以在方法中解釋這種行為嗎?
