java - 类 java.util.LinkedHashMap 不能转换为类 java.lang.String(java.util.LinkedHashMap 和 java.lang.String
问题描述
我正在使用以下代码从 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 列表,但是当我尝试获取 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 无法转换为 gov.doj.indisearch.datasource.listener 的类 java.lang.String(java.util.LinkedHashMap 和 java.lang.String 位于加载程序“bootstrap”的模块 java.base 中)。 JmsConsumer.onMessage(JmsConsumer.java:62)
如何在响应中获取 JSON?
解决方案
您需要序列化响应。有许多库可以帮助您完成这项工作,例如 Jackson 或 Gson。
在杰克逊你可能会这样做:
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(serializableObject);
在 Gson 中,您可能会这样做:
Gson gson = new Gson();
String json = gson.toJson(serializableObject);
推荐阅读
- python-3.x - 如何读取输出并将特定字符串值存储在变量中&如果输出中不存在特定字符串然后打印整个消息?
- reactjs - 如何在 React 中按行和列显示图像
- sql - 为每个不同的 UID 表中的每一行执行存储过程
- javascript - Invariant Violation:试图在 react native 中注册两个同名 RNCAndroidDialogPicker 视图
- asp.net-core - 是否可以为 DNN 网站运行 Worker 服务,或者我是否需要使用其他东西(后台服务、ajax 时间间隔等?)
- python - 如何在 Manim 上为移动文本设置动画
- asp.net - 从 cookie 和 Authorization Bearer 验证 JWT
- ruby-on-rails - 使用 rails/ruby 为葡萄牙语单词添加重音符号
- windows - 在 Windows 命令行中使用管道运行简单的 Fortran exe
- javascript - 在 Wordpress Apache 上安装 Angular 应用程序