我在以 json 格式回傳物件時遇到問題。這是我回傳 json 物件的函式:
@GetMapping("/api/code/{n}")
@ResponseBody
public Code getCodeJson(@PathVariable int n) {
Code code = codeList.get(n - 1);
return code;
}
Code 型別的物件存盤在一個串列中,我想通過路徑變數 n 訪問它們。回傳看起來是這樣的:
{"id":1,"code":"{\"code\":\"hello world\"}","dateTime":"2021-10-05T16:49:31.911591"}
我不知道為什么會發生這種情況,它應該回傳一個如下所示的 json:
{"id":1,"code":"hello world","dateTime":"2021-10-05T16:49:31.911591"}
這就是我將代碼物件添加到 codeList 的方式
@PostMapping("/api/code/new")
@ResponseBody
public String addNewCode(@RequestBody String code) {
Code newCode = new Code(code);
codeList.add(newCode);
return "{\n" "\"id\" : \"" newCode.getId() "\"\n}";
}
這是 Code.java 類
public class Code {
private static int currentId = 1;
private int id;
private String code;
private LocalDateTime dateTime;
public Code(String code) {
this.id = currentId;
this.code = code;
this.dateTime = LocalDateTime.now();
currentId ;
}
public int getId() {
return id;
}
public String getCode() {
return code;
}
public LocalDateTime getDateTime() {
return dateTime;
}
public void setCode(String code) {
this.code = code;
this.dateTime = LocalDateTime.now();
}
}
uj5u.com熱心網友回復:
您可以更新 addNewCode 以接受Code或使用 new DTOCodeDto作為請求正文,并改為使用它。截至目前,您將整個請求正文作為字串獲取,并將其分配給導致當前回應的代碼。
@PostMapping("/api/code/new")
@ResponseBody
public String addNewCode(@RequestBody CodeDto code) {
Code newCode = new Code(code.getCode());
codeList.add(newCode);
return "{\n" "\"id\" : \"" newCode.getId() "\"\n}";
}
當您{"code":"hello world"}作為請求主體傳遞時,上述代碼將自動將其正確地反序列化為CodeDto代碼屬性設定為“hello world”的物件實體。
public class CodeDto {
private String code;
public CodeDto(String code) {
this.code = code;
}
public CodeDto() {}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321970.html
