将从 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 前端获取它的主要内容,如果未能解决你的问题,请参考以下文章

将从数据库中检索的值设置为字符串到android中的评分栏

将从表单检索到的数组数据存储到数据库

如何将从 json 检索到的数据从一个视图传递到另一个视图? [复制]

如何一次将从 Firebase 检索到的数据存储在 ArrayList<String> 中?

如何将从 ms 访问表中检索到的记录插入到 sql server 表中?

如何将从表单提交中检索到的参数作为参数传递给 django 中的函数