我有以下json数据(patients.json):
{
"A" : {
"name" : "Tom",
"age" : 12
},
"B" : {
"name" : "Jim",
"age" : 54
}
}
使用Jackson JSON库,我怎样才能获得如下内容:
HashMap<String, ???> patients = objectMapper.readValue(new File("patients.json"), ???);
String Aname = patients.get("A").get("name");
int Aname = patients.get("A").get("age");
答案 0 :(得分:3)
将您的JSON反序列化为Jackson的JSON对象类型ObjectNode
。然后,您可以根据需要遍历它。
例如
ObjectNode patients = objectMapper.readValue(new File("test.json"), ObjectNode.class);
// you can check if it is actually an ObjectNode with JsonNode#isObject()
ObjectNode nodeA = (ObjectNode)patients.get("A");
String name = nodeA.get("name").asText();
int age = (int) nodeA.get("age").asLong();
请注意,如果目标节点无法转换为该类型,则方法asXyz()
将返回默认值。在调用它们之前,您可以使用相应的isXyz()
方法进行检查。
答案 1 :(得分:1)
您可以创建一个类来映射患者;
private static class Patient {
@JsonProperty("name")
private String name;
@JsonProperty("age")
private int age;
public Patient() { }
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
然后通过杰克逊
读取你的jsonHashMap<String, Patient> patients = objectMapper.readValue(new File("patients.json"), new TypeReference<HashMap<String,Patient>>() {});
Patient patientA = patients.get("A");
String patientAName = patientA.getName();
int pateintAAge = patientA.getAge();