【问题标题】:Map Json to POJO class using Rest Template exchange method使用 Rest Template 交换方法将 Json 映射到 POJO 类
【发布时间】:2019-11-03 07:34:41
【问题描述】:

这是我对 API 的 POST 请求

ResponseEntity<String> result = rt.exchange(url, HttpMethod.POST, httpEntity, String.class);

我得到的回应如下

{
    "headers": {
        "Cache-Control": [
            "no-store"
        ],
        "Content-Type": [
            "application/json;charset=UTF-8"
        ],
        "Date": [
            "Thu, 20 Jun 2019 12:50:08 GMT"
        ],
        "Pragma": [
            "no-cache"
        ],
        "Server": [
            "val"
        ],
        "X-Content-Type-Options": [
            "nosniff"
        ],
        "X-Frame-Options": [
            "DENY"
        ],
        "X-Xss-Protection": [
            "1; mode=block"
        ],
        "Content-Length": [
            "331"
        ]
    },
    "body": {
        "access_token": "token_value,
        "scope": "KYC",
        "token_type": "bearer",
        "expires_in": 49900,
        "jti": "jti_val"
    },
    "statusCode": "OK",
    "statusCodeValue": 200
}

我需要提取 access_token,scope,token_type,statusCodeValue

那么我的 POJO 类的结构应该是什么来映射响应?或者我如何从 JSON 中获取这些字段的值?

ResponseEntity<PojoClass> result = rt.exchange(url, HttpMethod.POST, httpEntity, PojoClass.class);

【问题讨论】:

    标签: json spring spring-boot


    【解决方案1】:

    Body 可以通过上面发布的 sn-p 并且可以使用“response.getStatus()”检索状态码

    【讨论】:

      【解决方案2】:

      试试这个:更新

       ResponseEntity<Response> response = rt.exchange(url, HttpMethod.POST, httpEntity, Response.class);
      

      类定义:

      身体等级:

      public class Body implements Serializable{
          private String access_token;
          private String scope;
          private String token_type;
          private long expires_in;
          private String jti;
      
          //standard getters and setters
      
      }
      

      响应类:

      @JsonIgnoreProperties(ignoreUnknown = true)
      public class Response implements Serializable{
          private String statusCode;
          private int statusCodeValue;
          private Body body;
      
          //standard getters and setters
      
      }
      

      现在: 您应该使用它们各自的 getters 方法访问您想要的值。 喜欢:

      String token=response.getBody.getAccessToken();
      String statusCode= respnse.getStatusCode();
      

      【讨论】:

      • response.getBody.getAccessToken(); response.getBody 无法访问 getAccessToken();
      • 字符串令牌=response.getBody().getBody().getAccess_token(); //空指针异常 你的伪代码本身不正确,不能像这样访问token String token=response.getBody.getAccessToken();
      • 我觉得你在做hit n trial方法
      • @OracleMonkey,你为什么认为,我的伪代码不正确?这有什么问题:String token=response.getBody.getAccessToken();?您必须为您的类实体生成 getter 和 setter,并使用这些 getter 来访问特定的变量。它可能因名称而异,因为我使用了 getAccessToken 这个。不,它没有命中和试用,建议是根据您提供的代码段提出的。
      猜你喜欢
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      • 2019-08-10
      相关资源
      最近更新 更多