我发送以下JSON:
{
"sqId": "10009",
"pCode": [
{
"key": [
[
1,
0,
1
]
]
}
],
"hdId": "87",
"sType": [
{
"key": [
{
"id": "id_1",
"q": "1",
"pCode": "pCode_1",
"Type": "T_1",
"Level": "f"
}
]
}
]
}
使用以下POJO映射:
public class Pinfo {
protected String sqId;
protected String hdId;
protected Map<String, Integer> pCode;
protected Map<String, List<sType>> sType;
public Map<String, List<sType>> getsType() {
return sType;
}
public void setsType(Map<String, List<sType>> sType) {
this.sType = sType;
}
public String getsqId() {
return sqId;
}
public void setsqId(String sqId) {
this.sqId = sqId;
}
public Map<String, Integer> getpCode() {
return pCode;
}
public void setpCode(Map<String, Integer> pCode) {
this.pCode = pCode;
}
public String gethdId() {
return hdId;
}
public void sethdId(String hdId) {
this.hdId = hdId;
}
}
现在使用以下代码阅读JSON:
Map<String, Integer> pMap = (Map<String, Integer>) PinfoObj.getpCode(); //Getting Error
logger.debug("### pMap ###"+pMap.values());
但我收到错误:
&#34;无法读取文档:无法反序列化实例 java.util.LinkedHashMap中的START_ARRAY标记\ n在[来源: java.io.PushbackInputStream@5ed7c090; line:2,column:40](通过 参考链:com.ve.pg.dto.Pinfo [\&#34; pCode \&#34;]);嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:不能 从START_ARRAY反序列化java.util.LinkedHashMap的实例 令牌\ n在[来源:java.io.PushbackInputStream@5ed7c090;线:2, 专栏:40](通过参考链: com.vonage.pg.dto.Pinfo [\&#34; P码\&#34;])&#34;
无法弄清楚我现在缺少什么,任何想法或提示都会很棒。
答案 0 :(得分:4)
错误:
Could not read document: Can not deserialize instance of
java.util.LinkedHashMap out of START_ARRAY token
告诉你&#34;我遇到了START_ARRAY令牌([
),但是你要我反序列化到地图,所以我希望找到一个START_OBJECT令牌({
) &#34;
你的错误是试图反序列化像
这样的东西[{
"key": [
[
1,
0,
1
]
]
}]
到Map<String, Integer>
,实际上是List<Map<String, List<List<Integer>>>>
。您应该更改JSON
的结构,或者将类型更改为反序列化为。
sType
应该修正同样的错误。
答案 1 :(得分:1)
类型不匹配,可以这样改变:
int foo(int i)
{
return i;
}
int foo(int i, int... n)
{
return i + foo(n...);
}
int main()
{
return foo(1, 2, 3); // error
}