gpt4 book ai didi

java - 在 Spring RestController 中显式将 POJO 转换为 JSON 的最佳方法

转载 作者:行者123 更新时间:2023-12-01 19:29:54 24 4
gpt4 key购买 nike

我在 Spring Boot 项目中有一个现有的 REST API,看起来有点像这样:

@GetMapping(value = "/api/projects")
public List<Project> getProjects() {
List<Project> projects = projectsRepository.findAll();
List<Project> processed = processProjects(projects);
return processed;
}

调用此方法时,返回的 JSON 响应如下所示:

{
"JSON":"[
{
"id":"aaa",
"simple":"SYMBOLIC_VALUE_BBB",
"nested1":{
"field1":"SYMBOLIC_VALUE_C1",
"field2":"nonSymbolicValueC2",
"field3":"SYMBOLIC_VALUE_C3"
},
"nested2":{
"fieldA":"SYMBOLIC_VALUE_DDD"
}
},
...
]",
"mode":"application/json"
}

符号值在前端被翻译成人类可读的形式。一切正常。但现在我还需要此方法的第二个版本,它可以在后端进行翻译。像这样的事情:

@GetMapping(value = "/api/v2/projects")
public String getProjects() {
List<Project> projects = projectsRepository.findAll();
String projectsAsJson = ???
String processedJson = processProjectsJson(projectsAsJson);
return processedJson;
}

三个问号 (???) 的位置应该放什么?我想使用 Spring 框架自动使用的相同 json 序列化。它应该能够抵御 future 可能发生的任何配置更改。

非常感谢。

最佳答案

在你的Controller中添加一个属性ObjectMapper,使用依赖注入(inject)来获取它,然后使用:mapper.writeValueAsString(myObject);

类似的事情:

@Autowired
private ObjectMapper mapper;

@GetMapping(value = "/api/v2/projects")
public String getProjects() {
List<Project> projects = projectsRepository.findAll();
String projectsAsJson = mapper.writeValueAsString(projects);
String processedJson = processProjectsJson(projectsAsJson);
return processedJson;
}

如果它不起作用,请告诉我。

关于java - 在 Spring RestController 中显式将 POJO 转换为 JSON 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60077359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com