如何将从spring-boot检索的数据转换为JSON对象并在有角度的前端中获取数据

时间:2019-07-07 14:14:13

标签: json spring-boot spring-data-jpa angular6 postgresql-9.4

我想从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方法捕获该对象

2 个答案:

答案 0 :(得分:3)

Spring默认使用Jackson序列化/反序列化,并且返回类型为Json。返回对象本身,而不是返回String返回类型,它将被转换为Json,而无需使用任何其他代码。您的控制器通常如下所示。

@RestController
@CrossOrigin
public class SkillsController {

    @Autowired
    SkillsRepository skillsRepository;

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

答案 1 :(得分: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();
  }

}