[英]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.