【发布时间】:2017-08-31 22:57:12
【问题描述】:
我有这样的 JSON 结构:
{
"person":
{
"name": "snoop",
"age": "22",
"sex": "male"
}
}
还有这样的豆子:
public class Person {
HashMap<String,String> map;
//getters and setters
}
我希望 JSON 中的所有键和值都填充到 Person 类的映射中。
我不想为来自 JSON 的每个键创建 bean,例如 int age、String name 等。
我尝试了以下示例,它适用于如下的普通 JSON 结构:
{
"type": "Extends",
"target": "application",
"ret": "true"
}
程序是:
String jsonString = "{\"type\": \"Extends\", \"target\": \"application\", \"ret\":\"true\" }";
ObjectMapper mapper = new ObjectMapper();
try {
Map<String, Object> carMap = mapper.readValue(jsonString, new TypeReference<Map<String, Object>>() {
});
for (Entry<String, Object> entry : carMap.entrySet()) {
System.out.println("key=" + entry.getKey() + " and value=" + entry.getValue());
}
} catch (Exception e) {
e.printStackTrace();
}
上面的程序工作正常,并从 JSON 中获取 Hashmap 中的值。但在前面提到的 Hashmap 的情况下:
{
"person":
{
"name": "snoop",
"age": "22",
"sex": "male"
}
}
它不起作用并在 Hashmap 为空时给出NullPointerException。
有什么方法可以使用 Jackson API 在 Person 类中填充 Hashmap。
【问题讨论】:
-
“不起作用”具体如何?
-
它给出了 null hasmap 值。