2 回答

TA貢獻1834條經驗 獲得超8個贊
您可以使用JsonView功能。您可以定義幾個不同的級別:
public class Views {
public static class Public {
}
public static class Internal extends Public {
}
}
現在,您需要注釋您的POJO屬性:
public class Process{
@JsonView(Views.Public.class)
private String processId;
@JsonView(Views.Public.class)
private ProcessStatus status;
@JsonView(Views.Internal.class)
private String hostname;
@JsonView(Views.Internal.class)
private String errorMessage;
}
當您已經擁有它時,您需要注釋API方法。GET:
@RequestMapping(value = "/process", method = RequestMethod.GET, produces = { MediaType.APPLICATION_JSON_UTF8_VALUE })
@JsonView(Views.Public.class)
public Process getProcess (@RequestParam("processId") String processId)
對于POST:
@RequestMapping(value = "/process", method = RequestMethod.POST, consumes = { MediaType.APPLICATION_JSON_UTF8_VALUE })
@JsonView(Views.Internal.class)
public HttpStatus updateProcess (@RequestBody Process process)
當然,您可以為視圖選擇更好的名稱。以上只是閱讀鏈接文章后的示例用法。我沒有測試它,但你應該得到一般的想法。

TA貢獻1807條經驗 獲得超9個贊
最簡單的方法是使用另一個 DTO(數據傳輸對象)類,它不包含您不想發回的字段。在您的情況下,這意味著創建一個ProcesDTO類,如下所示:
public class ProcessDTO {
private String processId;
private ProcessStatus status;
private hostname;
}
Process此外,這意味著要在和之間進行映射ProcessDTO,這可以手動完成,也可以使用某種庫來完成,例如org.modelmapper。
假設這Process是某種實體類,無論如何都不建議直接使用它們來發回 JSON 數據。
添加回答
舉報