我正在用下面的代码从RESTAPI获取记录。。。
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列表,但是当我试图获得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"]>
收到异常:类java.util.linkedhashmap不能转换为类java.lang.string(java.util.linkedhashmap和java.lang.string在加载程序“bootstrap”的模块java.base中)java.lang.classcastexception:类java.util.linkedhashmap不能转换为类java.lang.string(java.util.linkedhashmap和java.lang.string在模块中)位于gov.doj.indearch.datasource.listener.jmsconsumer.onmessage(jmsconsumer。java:62)
如何获取响应中的json?
2条答案
按热度按时间d4so4syb1#
这是个老问题。如果使用泛型类型,请使用ParameteredTypeReference封装结果。
r7xajy2e2#
您需要序列化响应。有很多图书馆可以帮你做到这一点,例如Jackson或格森。
在Jackson,你可能会:
在gson中,您可以执行以下操作: