2017-08-01 82 views
0

我想創建一個如下添加多個節點的Json到一個利用傑克遜

{ 
    "properties": { 
    "a": { 
     "b": 1, 
     "c": "2", 
     "d": 3, 
     "e": 4 
    }, 
    "f": { 
     "g": 5, 
     "h": "6", 
     "i": 7, 
     "j": 8 
    } 
    } 
} 

JSON結構類似,但我不能。

我已經寫了下面的代碼

for(Annotation a : annotationList) { 
    ObjectNode objectNode1 = readAnnotation(a); 
    String name= getName(key); 
    objectNode.putPOJO(name, objectNode1); 
    propertiesObjectNode.put("properties", objectNode1); 
} 

創建一個JSON但最終我只有一個在性節點。

我有以下的Json

{ 
    "properties" : { 
    "f" : { 
     "g" : 5, 
     "h" : "6", 
     "i" : 7, 
     "j" : 8 
    } 
    } 
} 
+0

使objectNode1成爲一個列表,並將所有readAnnotations添加到propertiesObjectNode並創建json。現在可能是第二個註釋是唯一被添加到屬性中的註釋。 – digidude

+0

這可能,但我不想添加爲列表。 – rahul

+1

通過每個註釋調用一次'propertiesObjectNode.put(「properties」,whatever)來覆蓋你的'properties'項目。首先創建'properties'項目,然後爲每個註釋設置其中一個字段? – Aaron

回答

0
propertiesObjectNode.put("properties", objectNode1); 

這一行裏面一個for循環,所以你在每次迭代覆蓋它。最後,只剩下1個節點,這是上次迭代的結果。

0

也許我在這裏沒有基礎,但是如果您使用的是傑克遜,爲什麼不使用ObjectMapper類。它會將POJO轉換爲JSON。

ObjectMapper mapper = new ObjectMapper(); 
MyPojo pojo = new MyPojo(); 

String json = mapper.writeValueAsString(pojo); 

如果您想設置類似的東西,傑克遜可以採取地圖並輸出json版本。

你會碰到這樣的:

Map<String, Object> a = new HashMap<String, Object>(); 
a.put("b", 1); 
a.put("c", "2"); 

Map<String, Object> f = new HashMap<String, Object>(); 
f.put("g", 5); 
f.put("h", "6"); 

Map<String, Object> propWrapper = new HashMap<String, Object>(); 
propWrapper.put("a", a) 
propWrapper.put("f", f) 

Map<String, Object> props = new HashMap<String, Object>(); 
props.put("properties", props); 

ObjectMapper mapper = new ObjectMapper(); 
String json = mapper.writeValueAsString(props); 

,並應輸出你要找的結構。使用自己的POJO來獲得更多意義的完整結構會更好,但這應該提供一個想法。