Die kurze Antwort lautet: Sie können nicht. TextNode
stellt keine Operationen zur Verfügung, mit denen Sie den Inhalt ändern können.
Mit diesem gesagt, können Sie die Knoten in einer Schleife oder durch Rekursion leicht durchlaufen, um das gewünschte Verhalten zu erhalten. Stellen Sie sich folgendes:
public class JsonTest {
public static void change(JsonNode parent, String fieldName, String newValue) {
if (parent.has(fieldName)) {
((ObjectNode) parent).put(fieldName, newValue);
}
// Now, recursively invoke this method on all properties
for (JsonNode child : parent) {
change(child, fieldName, newValue);
}
}
@Test
public static void main(String[] args) throws IOException {
String json = "{ \"fieldName\": \"Some value\", \"nested\" : { \"fieldName\" : \"Some other value\" } }";
ObjectMapper mapper = new ObjectMapper();
final JsonNode tree = mapper.readTree(json);
change(tree, "fieldName", "new value");
System.out.println(tree);
}
}
Die Ausgabe lautet:
{ "fieldname": "neuer Wert", "verschachtelt": { "fieldname": "neuer Wert"}}
Hast du http://stackoverflow.com/questions/17967531/jackson-api-partially-update-a-string –
sehe ich nicht POJO, die meine Json darstellt. Muss ich wirklich alles tun, um einen einfachen textNode zu aktualisieren? !! –
Siehe auch: http://wiki.fasterxml.com/JacksonHowToCustomDeserializers und http://www.baeldung.com/jackson-deserialization –