![](/img/trans.png)
[英]Spring Data JPA findAll() or findbyId() return wrong value in spring boot
[英]Spring Boot wrong json value
我在以 json 格式返回 object 時遇到問題。 這是我的 function 返回一個 json object:
@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"}
這就是我將代碼對象添加到代碼列表的方式
@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}";
}
這是代碼.java class
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();
}
}
您可以更新 addNewCode 以接受Code
或新的 DTO CodeDto
作為請求正文並改用它。 截至目前,您正在將整個請求主體作為字符串獲取,並將其分配給導致當前響應的代碼。
@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"}
作為請求主體傳遞時,上面的代碼將自動將其正確反序列化為代碼屬性設置為“hello world”的CodeDto
object 實例。
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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.