簡體   English   中英

如何使用傑克遜API將高JSON層次結構復制到Java對象中?

[英]How to replicate high json hierarchy into java objects using jackson api?

我想使用JACKSON在JAVA中編寫一個代碼,該代碼允許在JSON中顯示較高的層次結構,如以下摘錄所示。 此外,必須以一種方式構造層次結構,使所得的json應用程序取決於條件“ validFrom”和“ validTo”。

在下面的示例中,“ validFrom”和“ validTo”的所有日期都相同,但實際上日期可能有所不同,即每個子元素可以具有幾個不同的有效期:

例如“ DE”的可能日期:
“ validFrom”:[“ 2000-01-31”,“ 1995-01-31”]
“ validTo”:[“ 2099-01-31”,“ 2000-01-30”]

因此,對於“ validFrom” =“ 1995-01-31”和“ validTo” =“ 2000-01-30”的組合,假設子元素“ DE”應該屬於父元素“ Z9”(在json中未看到)下面提供的示例!),但對於“ validFrom” =“ 2000-01-31”和“ validTo” =“ 2099-01-31”的組合,它應屬於父級“ U6”(例如下面的json示例) 。

即根據屬性“ validFrom”和“ validTo”,子元素可以屬於一個父對象或另一個父對象(在下面的示例中,“ DE”僅屬於父“ U6”,但問題是要在Java代碼中將此類條件實現為一種可能與眾不同的方式)。 Whithin在一個層次結構中,一個子元素應該僅屬於一個父元素。

為了使用傑克遜在json中編寫此結構,java中的代碼必須是什么樣的?

{
"HierarchicalCode":[
{
    "code": "A1",
    "description": "Welt",
    "validFrom": "2000-01-31",
    "validTo": "2099-01-31",

    "children":[
        {
        "code": "U6",
        "description": "Inland",
        "validFrom": "2000-01-31",
        "validTo": "2099-01-31",

            "children":[
            {
            "code": "DE",
            "description": "Deutschland",
            "validFrom": "2000-01-31",
            "validTo": "2099-01-31"
            }
            ]
        },
        {
        "code": "Z9",
        "description": "Ausland",
        "validFrom": "2000-01-31",
        "validTo": "2099-01-31"

        }
    ]
}



]
}

我不太了解基於有效日期和有效日期的邏輯。

首先,您需要構建模型,其次,您必須使用對象映射器對其進行序列化。 例:

public static void main(String[] args) throws IOException {
    ObjectMapper objectMapper = new ObjectMapper();
    HierarchicalCode hierarchicalCode = objectMapper.readValue(s, HierarchicalCode.class);
    // we constructed our hierarchical code here somehow, now serialize
    String result = objectMapper.writeValueAsString(hierarchicalCode);
    System.out.println(result);
}

private static class HierarchicalCode {

    @JsonProperty("HierarchicalCode")
    private List<HierarchicalElement> hierarchicalCode;

    public List<HierarchicalElement> getHierarchicalCode() {
        return hierarchicalCode;
    }
}

private static class HierarchicalElement {

    private String code;
    private String description;
    private Timestamp validFrom;
    private Timestamp validTo;
    private List<HierarchicalElement> children;

    public String getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    public Timestamp getValidFrom() {
        return validFrom;
    }

    public Timestamp getValidTo() {
        return validTo;
    }

    public List<HierarchicalElement> getChildren() {
        return children;
    }
}

希望能有所幫助。

暫無
暫無

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

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