4 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
您擁有的鏈接的響應(yīng)不是User,而是List<User>- 嘗試反序列化。
您的代碼應(yīng)該與此類似(我試圖稍微美化一下):
public List<User> exposeServices() {
RestTemplate restTemplate= new RestTemplate();
ResponseEntity<String> response= restTemplate.getForEntity("https://jsonplaceholder.typicode.com/posts", String.class);
Gson gson = new Gson();
return gson.fromJson(response.getBody(), List.class);
}
另外,如果您沒有特定的使用理由Gson,我認(rèn)為您可以這樣做:
public List<User> exposeServices() {
RestTemplate restTemplate= new RestTemplate();
return restTemplate.getForEntity("https://jsonplaceholder.typicode.com/posts", List.class).getBody();
}
如評(píng)論中所述,這對(duì)演員表有警告。

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
Jackson 是一個(gè) JSON 序列化器/反序列化器,默認(rèn)包含在 spring 中并被RestTemplate默認(rèn)使用。
端點(diǎn)返回的是用戶列表,因此您不能將其User直接反序列化為 a,它必須是 a 類型List<User>。
public List<User> exposeServices() {
? ? RestTemplate restTemplate= new RestTemplate();
? ? return restTemplate.exchange("https://jsonplaceholder.typicode.com/posts",?
? ? ? ? HttpMethod.GET,?
? ? ? ? null,? ?
? ? ? ? new ParameterizedTypeReference<List<User>>() {})
? ? ? ? .getBody();
}
如果你只是傳入List.class它RestTemplate,它將不知道你希望你的列表包含什么,你可能會(huì)從編譯器那里得到一個(gè)警告。
我們可以通過將 our 包裝List<User>到一個(gè)ParameterizedTypeReference用于此的類型中來繞過它,用于向類型添加參數(shù)(列表是一種類型,它需要一個(gè)參數(shù),在本例中為用戶)。

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
您可以為此使用以下解決方案
首先,您需要三個(gè)庫“Jackson-Databind”、“jackson-annotations”、“jackson-core”,它們應(yīng)該是同一版本。以下是示例代碼
String jsonString = "<The json user list you received>";
ObjectMapper mapper = new ObjectMapper();
List user = mapper.readValue(jsonString.getBytes(), List.class);
Iterator it = user.iterator();
List<User> userList = new ArrayList<>();
while(it.hasNext())
{
User receivedUser = new User();
LinkedHashMap receivedMap = (LinkedHashMap)it.next();
receivedUser.setUserId((Integer)receivedMap.get("userId"));
receivedUser.setId((Integer)receivedMap.get("id"));
receivedUser.setTitle((String)receivedMap.get("title"));
receivedUser.setBody((String)receivedMap.get("body"));
userList.add(receivedUser);
}
我已經(jīng)創(chuàng)建了用戶類。最后 userList 將包含所有來的用戶。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超13個(gè)贊
您的解決方案是使用數(shù)組而不是一個(gè)對(duì)象:
User[] users = gson.fromJson(response, User[].class);
添加回答
舉報(bào)