gpt4 book ai didi

java - 如何修改响应并绑定(bind)DTO

转载 作者:行者123 更新时间:2023-12-01 16:39:48 25 4
gpt4 key购买 nike

我对 Spring Boot 开发非常陌生。目前,我正在使用 @FeignClient 调用外部 API,我想将其绑定(bind)到我的 DTO。

我的 DTO 看起来像

public class TestDTO {
private UUID uuid;
private String name;
}

我的@FeignClient

@FeignClient(name = "testClient", url = "http://extenalApi/getRules")
public interface DataClient {

@RequestMapping(method = RequestMethod.GET)
List<TestDTO> getRules();
}

它抛出一个错误,因为外部 API 响应有点不同

{
"data": [
{
"customRule": {
"name": "SAMPLE 1",
"id": "0AB58A47D3A64B56A6B74DA0E66935DD"
}
},
{
"customRule": {
"name": "SAMPLE 2",
"id": "0AE6C846EAF648D1926E665E63633A94"
}
}
}

如何解析这个 JSON 并将其转换为

[ 
{
"name": "SAMPLE 2",
"id": "0AE6C846EAF648D1926E665E63633A94"
},
{ ...
}
]

按照我的 DTO 要求。

最佳答案

似乎您的 API 响应结构不同。

创建一个新容器来保存规则 API 的 API 响应:

public class RulesDTO {
private List<DataDto> data;

//getter setter

class DataDto{
TestDTO customRule;

//getter setter
}

}

将方法更改为 getRules:

@RequestMapping(method = RequestMethod.GET)
RulesDTO getRules();

现在将其解析为 TestDTO 列表以供您响应:

List<TestDTO> yourData =  data.stream().map(DataDto::getCustomRule).collect(Collectors.toList());

注意 - 这不是工作代码。只是为了给你一个想法。

关于java - 如何修改响应并绑定(bind)DTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61883231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com