使用 Rest Template 交换方法将 Json 映射到 POJO 类
Posted
技术标签:
【中文标题】使用 Rest Template 交换方法将 Json 映射到 POJO 类【英文标题】:Map Json to POJO class using Rest Template exchange method 【发布时间】: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);
【问题讨论】:
【参考方案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
这个。不,它没有命中和试用,建议是根据您提供的代码段提出的。以上是关于使用 Rest Template 交换方法将 Json 映射到 POJO 类的主要内容,如果未能解决你的问题,请参考以下文章
LinkedIn:将 JSAPI 令牌交换为 REST 的 OAuth 令牌
Rest Template 无法正确解析 json rest api 响应
如何在 Spring Boot 中使用带有 Bearer Token 和 form-data 的 Rest Template 调用 REST Api