将从 spring-boot 检索到的数据转换为 JSON 并在 Angular 前端获取它
Posted
技术标签:
【中文标题】将从 spring-boot 检索到的数据转换为 JSON 并在 Angular 前端获取它【英文标题】:Convert data retrieved from spring-boot to JSON and fetch it in angular front-end 【发布时间】:2019-11-17 06:14:29 【问题描述】:我想从 postgresql 中的技能实体中检索所有技能,并使用 get 方法将其发送到 Angular 前端。在 HTTP 请求中,我需要发送一个 JSON 对象。如何将检索到的值从 postgresql 转换为JSON 对象?
我已经使用 spring JPA 连接了 postgresql 数据库。而且我还得到了一个字符串值到我的前端。但我想要那些作为 JSON 对象
这是我的控制器类
@RestController
@CrossOrigin
public class SkillsController
@Autowired
SkillsRepository skillsRepository;
@RequestMapping("/getSkills")
@GetMapping("/getSkills")
@CrossOrigin
public String getSkills()
String result = "";
for (Skills skill : skillsRepository.findAll())
result += skill.toString();
return result;
这是我的 Angular 前端 ts 文件
public getAllSkills()
const url = 'http://localhost:8080/getSkills';
this.http.get(url, responseType: 'text').subscribe(
res =>
alert(res);
,
err =>
alert('Error in retrieving');
);
我想将检索到的值转换为 JSON 对象并在前端使用 get 方法捕获该对象
【问题讨论】:
@Coder,给出了正确的解决方案。在客户端不要忘记更改responseType: 'json'
【参考方案1】:
Spring 默认使用Jackson
序列化/反序列化,返回类型也是Json
。与其返回 String 返回类型,不如返回对象本身,它将被转换为 Json,而无需任何额外的代码。您的控制器通常如下所示。
@RestController
@CrossOrigin
public class SkillsController
@Autowired
SkillsRepository skillsRepository;
@GetMapping("/getSkills")
public List<Skill> getSkills()
return skillsRepository.findAll();
【讨论】:
乐于助人:)【参考方案2】:我将对您的帖子进行一些重写。所以答案很简单,您可以简单地从存储库中返回列表,Spring 会将列表转换为适当的 JSON 对象或数组。
@CrossOrigin
public class SkillsController
public SkillsRepository skillsRepository;
public SkillsController(SkillsRepository _skillsRepository)
skillsRepository = _skillsRepository;
@RequestMapping("/getSkills")
@CrossOrigin
public List<skillEntity> getSkills()
return (List<skillEntity>)skillsRepository.findAll();
【讨论】:
以上是关于将从 spring-boot 检索到的数据转换为 JSON 并在 Angular 前端获取它的主要内容,如果未能解决你的问题,请参考以下文章
如何将从 json 检索到的数据从一个视图传递到另一个视图? [复制]
如何一次将从 Firebase 检索到的数据存储在 ArrayList<String> 中?