javaarraysjson

Remove object from JSON array


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

Solution

  • 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();
               }
           }