Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中将对象响应映射到另一个ObjectDto_Java_Spring Boot - Fatal编程技术网

如何在java中将对象响应映射到另一个ObjectDto

如何在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

我必须用不同的键和值将rest模板响应映射到我的DTO。 目前,我从RESTAPI获得这个json响应

{
    "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()));
            }
        }

我发现我没有先设置钥匙。多亏了这个。