簡體   English   中英

Java-Jackson JSON庫和ObjectMapper.readValue

[英]Java - Jackson JSON Library and ObjectMapper.readValue

我有以下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");

將您的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()方法進行檢查。

您可以創建一個類來將您的患者映射到;

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;
    }
}

然后通過傑克遜將您的json讀入其中

HashMap<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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM