java Spring启动错误的json值
我在返回json格式的对象时遇到问题。这是我返回json对象的函数:
@GetMapping("/api/code/{n}")
@ResponseBody
public Code getCodeJson(@PathVariable int n) {
Code code = codeList.get(n - 1);
return 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类
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();
}
}
# 1 楼答案
您可以更新addNewCode以接受
Code
或新DTOCodeDto
作为请求主体,并使用它。现在,您将整个请求体作为字符串获取,并将其分配给导致当前响应的代码当您将
{"code":"hello world"}
作为请求体传递时,上述代码将自动将其正确反序列化为CodeDto
对象的实例,代码属性设置为“hello world”