【发布时间】:2018-07-19 05:59:10
【问题描述】:
早安,
我对 java 比较陌生,并试图完成一个项目,但我遇到了问题。我的程序使用 SQL 构建 URL 来调用 Web 服务,该服务将返回以下 JSON:
[{
"MmisItemNo": "106552",
"CatalogNo": "UM18840041R",
"ContractOn": "False"
}
]
我需要做的是去掉最后的“假”或“真”值,根据结果做额外的逻辑。
我不断收到以下错误:
.WebCall -com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot
deserialize instance of `.LightswitchResponse` out of START_ARRAY token at [Source: (String)"[{"MmisItemNo":"106552","CatalogNo":"UM18840041R","ContractOn":"False"}]"; line: 1, column: 1]
这是我目前在 WebCall.java 类中构建 URL 后的代码:
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
ObjectMapper mapper = new ObjectMapper();
LightswitchResponse lightswitchResponse = mapper.readValue(response.toString(), LightswitchResponse.class);
System.out.println(lightswitchResponse.ContractOn);
在我的第二堂课中,代码如下:
public class LightswitchResponse {
String MmisItemNo;
String CatalogNo;
boolean ContractOn;
public String getMmisItemNo() {
return MmisItemNo;
}
public void setMmisItemNo(String mmisItemNo) {
MmisItemNo = mmisItemNo;
}
public String getCatalogNo() {
return CatalogNo;
}
public void setCatalogNo(String catalogNo) {
CatalogNo = catalogNo;
}
public boolean ContractOn() {
return ContractOn;
}
public void setContractOn(boolean contractOn) {
ContractOn = contractOn;
}
}
对可能出现的问题有任何想法吗?我觉得这可能与 JSON 响应中的 [] 有关,但不是 100% 确定。
【问题讨论】:
-
我收到了您的错误消息,删除了所有自定义内容,并在 google 上进行了搜索。该副本是第一个结果。请养成在发布问题之前这样做的习惯。见How much research effort is expect of StackOverflow users?。
-
对不起,我不知道自从我使用杰克逊以来,我的情况是否有所不同。我会在下一篇文章之前做更多的研究,谢谢!