2016-07-29 11 views
2

JsonNodeツリーを利用して各値を更新したいと思います。ラムダ式でこれを行うことはできますか?事前にJSON値をラムダで更新する

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

ありがとう:

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

は、私は次のロジックを使用しようとしています!

+0

私はあなたができるとは思わない、http://stackoverflow.comを参照してください/ questions/30997362/how-to-modify-jsonnode-in-java –

+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()))) 
); 
関連する問題