响应实体返回对象的空列表



我能够使用返回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. 

最新更新