使用Jackson从JSON文件中删除空元素

Gré*_*rel 5 java json jackson

我正在尝试从JSON文件中删除一个元素:

[  
         {  
            "Lorem Ipsum ":4,
         },
         {  
            "Lorem Ipsum ":5,
         },
         {  
            "keyToRemove": value,
         }
]
Run Code Online (Sandbox Code Playgroud)

使用以下代码,我可以删除键和值:

for (JsonNode personNode : rootNode) {
    if (personNode instanceof ObjectNode) {
       if (personNode.has("keyToRemove")) {
          ObjectNode object = (ObjectNode) personNode;  
          object.remove("keyToRemove");
       }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我还有一个空括号:

[  
         {  
            "Lorem Ipsum ":4,
         },
         {  
            "Lorem Ipsum ":5,
         },
         {  
         }
]
Run Code Online (Sandbox Code Playgroud)

我该如何删除它?

naf*_*fas 5

你不是删除整个对象,而是删除它的一个元素.

object.remove("keyToRemove"); 
Run Code Online (Sandbox Code Playgroud)

将删除keyToRemove你的元素object.在这种情况下object基本上json object不是json array.

要删除整个对象,您不应该使用for loop.你可以尝试使用一个Iterator代替:

    Iterator<JsonNode> itr = rootNode.iterator();

    while(itr.hasNext()){
        JsonNode personNode = itr.next();
        if(personNode  instanceof ObjectNode){
           if (personNode.has("keyToRemove")) {
             // ObjectNode object = (ObjectNode) personNode;  
             // object.remove("keyToRemove");
             itr.remove();
           }
        }
    };
Run Code Online (Sandbox Code Playgroud)