我能够使用返回json对象的API。我试图做的是获取对象列表。下面是我的代码:
ResponseEntity<List<Entity>> responseEntity = restTemplate.exchange(dataUrl, HttpMethod.GET, entity,new ParameterizedTypeReference<List<Entity>>() {});
其中 我期望使用来自 json 的数据填充列表的对象的实体。但是当我打印它时,实体中的所有字段都设置了空值。我错过了什么?
谢谢 萨克
你能试试这个吗
ResponseEntity<List<Entity>> responseEntity = restTemplate.exchange(dataUrl, HttpMethod.GET, entity, Entity.class);
附言对不起,没有评论:(的声誉
为什么不使用restTemplate.getForEntity
?
ResponseEntity<Entity[]> response = restTemplate.getForEntity(dataUrl, Entity[].class)
Entity[] entities = response.getBody();
上面的情况返回一个类型为Entity[]
的对象,它是一个数组。
如果要使用List
接口,则需要创建一个包装类。
包装器:
public class EntityList {
private List<Entity> entities;
public EntityList() {
entities= new ArrayList<>();
}
// standard constructor and getter/setter
}
RestTemplate
调用:
在这里,您将使用restTemplate.getForObject
EntityList response = restTemplate.getForObject(dataUrl, EntityList.class);
List<Entity> entities = response.getEntities();
甚至更简单的替代方法是使用List.class
作为getForObject
的返回类型。
List<Entity> response= rest.getForObject(dataUrl, List.class);
由于缺少 json 示例,很难给出正确的答案。您能否提供将返回的 json 示例。
已解决
下面是我所做的代码更改,它返回了正确的实体对象列表。
ResponseEntity<Entity[]> responseEntity = restTemplate.exchange(dataUrl, HttpMethod.GET, entity, Entity[].class);
即使在进行此更改后也没有真正解决我的问题。我还必须添加
@JsonProperty("fieldName") on each field in Entity class which had to match Json properties.