Spring RestTemplate响应值全为空

时间:2016-10-28 19:47:48

标签: java spring resttemplate

好的,我遇到的问题是我可以使用RestTemplate成功进行调用。请求在服务器端成功完成。

但是,当它在客户端设置时,值不会被正确分配。下面的第一个类是应该由Post调用填充的客户端。第二个类是服务器用来发送它的类。

我认为我的问题出现是因为服务器发送的JSON格式。它看起来像下面的内容。

{ "record":{"firstName":"Bill", "lastName":"Johnson", "role":6}}

Spring无法自动将其映射到客户端POJO。有没有办法解决这个问题,而无需更改服务器端代码?

谢谢。

EmployeeResponse response = restTemplate.postForObject(uri, request, EmployeeResponse.class );

//(Client Side)
public class EmployeeResponse {

    private String firstName;
    private String lastName;
    private int role;


    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName= firstName;
    }
    public String getLastName() {
        return longKey;
    }

    public void setLastName(String lastName) {
        this.lastName= lastName;
    }
    public int getRole() {
        return role;
    }

    public void setRole(int role) {
        this.role = role;
    }
}

//(Server-Side)
public class EmployeeResponse {

    private EmployeeRecord record;

    public String getFirstName() {
        return record.getFirstName();
    }

    public String getLastName() {
        return record.getLastName();
    }

    public int getRole() {
        return record.getRole();
    }

    public ELAActivationResponse(EmployeeRecord record) {
        this.record = record;
    }

}

1 个答案:

答案 0 :(得分:0)

这是因为服务器响应包含根元素record而客户端对象没有,因此无法封送响应。

您需要使用EmployeeResponse

为响应对象类(@JsonRootName(value = "record"))添加注释