【发布时间】:2018-08-18 10:21:53
【问题描述】:
{
{
"1234": {
"name": "bob"
}
},
{
"5678": {
"name": "dan"
}
}
}
我有一个代表名称的类(和其他字段,我只是简单地回答了这个问题)。但是每个元素都以人的身份作为键。
我尝试了几件事,包括:
class Name {
String Name;
//getter and setter
}
class NameId {
String id;
Name name;
//getter and setters
}
//json is the string containing of the above json
ArrayList<NameId> map = objectMapper.readValue(json, ArrayList.class);
for (Object m : map) {
LinkedHashMap<String, NameId> l = (LinkedHashMap)m;
Map<String, NameId> value = (Map<String, NameId>) l;
//System.out.println(l);
//System.out.println(value);
for (Object key : value.keySet()) {
System.out.println("key: " + key);
System.out.println("obj: " + value.get(key));
NameId nameId = (NameId)value.get(key);
}
}
我的问题是它不允许转换为 NameId。我得到的错误是:
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to NameId
关于正确解析这样一个 json 字符串的最佳方法有什么想法吗?
【问题讨论】:
-
你的 JSON 格式肯定是错误的。
-
不需要强制转换。而你双重投射,我不明白。
-
更新了 json,我试过用 [] 和 {}
标签: java json jackson json-deserialization