为了账号安全,请及时绑定邮箱和手机立即绑定

ResponseEntity 为 JSON 响应返回 null

ResponseEntity 为 JSON 响应返回 null

慕标5832272 2022-05-12 16:07:48
我有一个 Restcontroller 类 -PolicyHoldersController- 向返回 JSON 对象的 API 发出 GET 请求。当我点击 RestController URL 时,我得到 null,虽然响应状态是 200。我相信我得到了一个有效负载,但我没有正确地将响应映射到我的 java bean -PolicyHolderBean,它复制了 JSON 响应的结构。在 PolicyholdersControllers 中,我调用另一个控制器 -authorizationTokenController-,它也返回带有令牌的 JSON。它以与 PolicyHoldersControllerworks 相同的方式实现并且工作正常,所以我很困惑为什么我的浏览器中的 PolicyHoldersController 为空。我错过了什么吗?PolicyHolders控制器:@RestControllerpublic class PolicyHoldersController {    private HttpHeaders setHeaders() {         AuthorizationTokenController authorizationTokenController =                new AuthorizationTokenController();         AuthorizationTokenBean authorizationTokenBean =                authorizationTokenController.postAuthorizationToken();        HttpHeaders headers = new HttpHeaders();        headers.add("Authorization", authorizationTokenBean.getAuthorizationToken());        headers.add("accept", "application/json");         return headers;    }    @GetMapping("/policyholders")    public PolicyHolderBean getPolicyHolders() {        HttpEntity<String> request =                new HttpEntity<String>(setHeaders());        ResponseEntity<PolicyHolderBean> responseEntity = new RestTemplate().exchange(                "https://api.acmeinsurance.com/policyholders",                HttpMethod.GET,                request,                PolicyHolderBean.class        );        PolicyHolderBean policyholders = responseEntity.getBody();        return policyholders;    }PolicyHolderBean:public class PolicyHolderBean {    private PolicyHolderResponse3Bean[] policyholders;    public PolicyHolderBean() {    }    public PolicyHolderBean(PolicyHolderResponse3Bean[] policyholders) {        this.policyholders = policyholders;    }    public PolicyHolderResponse3Bean[] getPolicyHolders() {        return policyholders;    }    public void setPolicyHolders(PolicyHolderResponse3Bean[] policyholders) {        this.policyholders = policyholders;    }}
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

使用 @JsonProperty 将输出字符串映射到您的 DTO ex:

@JsonProperty("authorizationToken") 私有字符串 authToken;

并继续在 ResponseEntity 中使用对象而不是 String

 ResponseEntity<SecurityToken> responseEntity = new RestTemplate().postForEntity(
                endpoint,
                credentials,
                SecurityToken.class
        );


查看完整回答
反对 回复 2022-05-12
?
HUWWW

TA贡献1874条经验 获得超12个赞

它适用于方法的这种实现getPolicyHolders():


@GetMapping("/policyholders")

    public PolicyHolderBean getPolicyHolders() {


        HttpEntity<String> request =

                new HttpEntity<String>(setHeaders());


        ResponseEntity<String> responseEntity = new RestTemplate().exchange(

                "https://api.sandbox.socotra.com/policyholders",

                HttpMethod.GET,

                request,

                String.class

        );


        String output = responseEntity.getBody();


        Gson gson=new Gson();

        PolicyHolderBean policyHolders=gson.fromJson(output,PolicyHolderBean.class);


        return policyHolders;


    }



查看完整回答
反对 回复 2022-05-12
  • 2 回答
  • 0 关注
  • 360 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信