类java.util. linkedhashmap不能强制转换为类java.lang.String (java.util



我从一个Rest API获取记录与以下代码…

HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(bimap, headers);
ResponseEntity<List> response = null;
try {
response = restTemplate.exchange("http://localhost:8080/dsperson/getallmatching",
HttpMethod.POST,
entity,
List.class);
dsPersonHits = response.getBody();
} catch (RestClientException e) {
// TODO Auto-generated catch block
System.out.println("getMatches exception:" + e.getLocalizedMessage());
e.printStackTrace();
}
System.out.println("getMatches response:" + response);
return dsPersonHits;

这里是日志。它似乎是得到JSON列表ok,但我得到以下当我试图得到JSON构建DSPerson对象的列表。

getMatches response:<200,[{id=1, userName=, title=Mr., firstName=Abel, middleName=, lastName=Baker, suffix=, alias=HITMAN , birthday=, philSysNumber=PSN:12345, dataSource=BI, criminalCaseNumber=, caseDescription=invalid visa, caseStatus=Settled}, {id=2, userName=, title=Ms., firstName=Alice, middleName=, lastName=Baker, suffix=, alias=Alice , birthday=, philSysNumber=PSN:12346, dataSource=BI, criminalCaseNumber=, caseDescription=invalid visa, caseStatus=Settled}, {id=3, userName=, title=Mr., firstName=Abrahim, middleName=, lastName=Balous, suffix=, alias=Abe, birthday=, philSysNumber=, dataSource=DOJ, criminalCaseNumber=CCN:123456, caseDescription=Murder, caseStatus=Convicted}],[Content-Type:"application/json", Transfer-Encoding:"chunked", Date:"Mon, 18 Jan 2021 09:30:26 GMT", Keep-Alive:"timeout=60", Connection:"keep-alive"]>
Received Exception : class java.util.LinkedHashMap cannot be cast to class java.lang.String (java.util.LinkedHashMap and java.lang.String are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class java.lang.String (java.util.LinkedHashMap and java.lang.String are in module java.base of loader 'bootstrap')
at gov.doj.indisearch.datasource.listener.JmsConsumer.onMessage(JmsConsumer.java:62)

如何在响应中获得JSON ?

您需要序列化响应。有许多库可以帮助您完成此操作,例如Jackson或Gson。

在Jackson你可以这样做:

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(serializableObject);

在Gson中,您可能会这样做:

Gson gson = new Gson();
String json = gson.toJson(serializableObject);

这是一个老问题。如果使用泛型,请使用ParameterizedTypeReference封装结果。

import org.springframework.core.ParameterizedTypeReference;
ParameterizedTypeReference<List<DSPerson>> ptr =
new ParameterizedTypeReference<List<DSPerson>>() {};
List<DSPerson> dsPersonHits = null;
HttpEntity<MultiValueMap<String, String>> entity = new HttpEntity<>(bimap, headers);
ResponseEntity<List<DSPerson>> response = null;
try {
response = restTemplate.exchange("http://localhost:8080/dsperson/getallmatching",
HttpMethod.POST,
entity,
ptr);
dsPersonHits = response.getBody();
} catch (RestClientException e) {
// TODO Auto-generated catch block
System.out.println("getMatches exception:" + e.getLocalizedMessage());
e.printStackTrace();
}
//System.out.println("getMatches response:" + response);
return dsPersonHits;

相关内容

最新更新