如何在java中将对象响应映射到另一个ObjectDto
我必须用不同的键和值将rest模板响应映射到我的DTO。 目前,我从RESTAPI获得这个json响应如何在java中将对象响应映射到另一个ObjectDto,java,spring-boot,Java,Spring Boot,我必须用不同的键和值将rest模板响应映射到我的DTO。 目前,我从RESTAPI获得这个json响应 { "access_token": "7ada1efc-f159-42fa-84b9-f15b2a0ee333", "refresh_token": "1c9f5a71-40ae-4979-90db-088c2aa44123", "token_type": "b
{
"access_token": "7ada1efc-f159-42fa-84b9-f15b2a0ee333",
"refresh_token": "1c9f5a71-40ae-4979-90db-088c2aa44123",
"token_type": "bearer",
"scope": null,
"expires_in": 1440
}
我想把它映射到我的DTO中,以便能够保存到DB中
@Data
public class AuthIntegrationTokenDto {
private long id;
private int cmsIntegrationId;
private String token;
private String refreshToken;
private String createdBy;
private String lastUpdatedBy;
}
我想要的是动态地获得相同的密钥,以匹配上面api的响应。
目前我正在这样做,但似乎我没有设置相同键的正确值
ResponseEntity<Object> response = restTemplate.exchange(
url,
HttpMethod.POST,
request,
Object.class,
"client_credentials"
);
Object result = response.getBody();
JSONObject json = new JSONObject((Map) result);
AuthIntegrationTokenDto authIntegrationTokenDto = new AuthIntegrationTokenDto();
for (Object o : json.entrySet()) {
Map.Entry entry = (Map.Entry) o;
authIntegrationTokenDto.setToken(String.valueOf(entry.getValue()));
authIntegrationTokenDto.setRefreshToken(String.valueOf(entry.getValue()));
}
ResponseEntity response=restemplate.exchange(
网址,
HttpMethod.POST,
要求
Object.class,
“客户端\u凭据”
);
对象结果=response.getBody();
JSONObject json=新的JSONObject((映射)结果);
AuthIntegrationTokenDto AuthIntegrationTokenDto=新的AuthIntegrationTokenDto();
for(对象o:json.entrySet()){
Map.Entry=(Map.Entry)o;
authIntegrationTokenDto.setToken(String.valueOf(entry.getValue());
authIntegrationTokenDto.setRefreshToken(String.valueOf(entry.getValue());
}
执行此操作后,我在数据库中得到空值
您没有正确设置DTO的值。您必须先获取密钥,然后进行设置:
for (Object o : json.entrySet()) {
Map.Entry entry = (Map.Entry) o;
if(entry.getKey() == 'access_token') {
authIntegrationTokenDto.setToken(String.valueOf(entry.getValue()));
} else if(entry.getKey() == 'refresh_token') {
authIntegrationTokenDto.setRefreshToken(String.valueOf(entry.getValue()));
}
}
我发现我没有先设置钥匙。多亏了这个。