I have an JSON array who looks like this:
[ {
"name" : "1",
"date" : "30/03 19:36:20"
}, {
"name" : "12",
"date" : "30/03 19:36:21"
}, {
"name" : "123",
"date" : "30/03 19:36:22"
}, {
"name" : "1234",
"date" : "30/03 19:36:23"
}, {
"name" : "12345",
"date" : "30/03 19:36:25"
} ]
How could I possibly delete one object by its name in java, like let's suppose I wanna delete the 1
{
"name" : "1",
"date" : "30/03 19:36:20"
},
How could I possibly delete just those lines, because my code at the moment deletes all entries from the file
public static void deleteSavefile() throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(new File("savefiles.json"));
for (JsonNode node : jsonNode) {
((ObjectNode)node).remove("name");
((ObjectNode)node).remove("date");
}
objectMapper.writeValue(new File("savefiles.json"), jsonNode);
}
If jsonNode
is an Array
of Objects
then jsonNode.elements()
returns Iterator<JsonNode>
, by using if
condition check the node with name equals 1
then delete the entire node
JsonNode jsonNode = objectMapper.readTree(new File("savefiles.json"));
Iterator<JsonNode> nodes = jsonNode.elements()
while(nodes.hasNext()) {
if(nodes.next().get("name").textValue().equals("1")){
nodes.remove();
}
}