如何使用Java中的ResponseEntity以JSON格式获取响应?

时间:2019-12-04 07:46:26

标签: java spring-boot

我正在构建API并使用以下方法执行POST请求:

public ResponseEntity<ProjectRequest> createProject(ProjectRequest project) {
        ProjectResponse projectResponse = new ProjectResponse();
        PersonMember personMember = new PersonMember();

        String personResponse = restTemplate.postForObject(PERSON_URL, project.getPersonMember(), String.class);

        System.out.println(personResponse);
        return new ResponseEntity<ProjectRequest>(HttpStatus.CREATED);
    }

但是,将personResponse作为String使用是不方便的,因为我无法轻松地从响应中提取值,例如personID,firstName等。

使用responseEntity时,使用键/值对的一种好方法是什么?

3 个答案:

答案 0 :(得分:2)

您应该将这项工作留给Spring。

创建某种PersonDto

public class PersonDto {
    private String firstName;
    private String lastName;
    //etc.

    //getters and setters

}

然后将响应映射为PersonDto

ResponseEntity<PresonDto> response = restTemplate
                    .postForEntity(PERSON_URL, project.getPersonMember(), PersonDto.class);
PersonDto presonDto = response.getBody();

答案 1 :(得分:1)

这可能有帮助:

Spring: return @ResponseBody "ResponseEntity<List<JSONObject>>"

使用批注(@ResponseBody ResponseEntity)并使用JSON作为响应对象可以回答您的问题。

答案 2 :(得分:0)

每当您将POJO传递给ResponseEntity时,Spring都会将其转换为Json。因此,请尝试为您的PersonResponse创建一个POJO(如果尚未创建POJO),然后将该对象直接传递给ResponseEntity。它应该看起来像这样:

class PersonResponse{
long id;
String name;
String description;

//Getters and setters for the fields.
}