将从 spring-boot 检索到的数据转换为 JSON 并在 angular 前端获取

Convert data retrieved from spring-boot to JSON and fetch it in angular front-end

我想从 postgresql 中的技能实体中检索所有技能,并使用 get 方法将其发送到 Angular 前端 end.In HTTP 请求我需要发送一个 JSON object.How 我可以将检索到的值从 postgresql 转换为 JSON 对象吗?

我已经使用 spring JPA 连接了 postgresql 数据库。而且我还得到了一个字符串值到我的前端。但我想要那些作为 JSON object

这是我的控制器class

@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 方法捕获该对象

Spring 默认使用 Jackson serialization/deserialization 并且 return 类型是 Json。而不是 returning String return 类型,return 对象本身,它将被转换为 Json,而无需您的任何额外代码。您的控制器通常如下所示。

@RestController
@CrossOrigin
public class SkillsController {

    @Autowired
    SkillsRepository skillsRepository;

    @GetMapping("/getSkills")
    public List<Skill> getSkills() {
        return skillsRepository.findAll();
    }
}

我将对您的 post 进行一些重写。所以答案非常简单,您可以简单地从存储库中 return 列表,然后 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();
  }

}