2016-07-29 44 views
2

我想採用JsonNode樹並更新每個值。這可以用lambda表達式來完成嗎?使用lambda更新JSON值

{ 
    "resource": { 
     "key1": "value1", 
     "key2": "value2", 
     "key3": "value3" 
    } 
} 

我嘗試使用以下邏輯:

JsonNode json = new ObjectMapper().readTree(new ObjectMapper().writeValueAsString(myObject)); 

ObjectNode rootNode = (ObjectNode) json; 
ObjectNode resourceNode = (ObjectNode) rootNode.path("resource"); 

//Psuedo Code here 
resourceNode.forEach(node -> node.value = myFunc(node.value)); 

提前感謝!

+0

我不認爲你可以看到http://stackoverflow.com/questions/30997362/how-to-modify-jsonnode-in-java – 2016-07-29 15:42:56

+0

@RC這是可能的 – Andremoniy

回答

4

使用.fields()遍歷鍵/值對:

resourceNode.fields().forEachRemaining(
    entry -> resourceNode.set(
     entry.getKey(), 
     func(entry.getValue()) 
    ) 
); 
+0

沒錯,那好多了 – Andremoniy

1

其實你可以這樣做:

resourceNode.fieldNames().forEachRemaining(
     s -> resourceNode.set(s, new TextNode(func(resourceNode.get(s).asText()))) 
);