net.minidev.json.actions.ElementRemover Maven / Gradle / Ivy
package net.minidev.json.actions;
import net.minidev.json.JSONObject;
import net.minidev.json.actions.traverse.JSONTraverser;
import net.minidev.json.actions.traverse.RemoveElementsJsonAction;
import net.minidev.json.actions.traverse.JSONTraverseAction;
import java.util.*;
/**
* Removes key:value elements from every node of a {@link JSONObject} matching the list of user-specified elements.
*
* An element to remove must be specified as a key:value pair
*
* Usage Example:
*
* To remove the element k2:v2 from the {@link JSONObject} {k0:{k2:v2, k3:v3}, k1:{k2:v2, k4:v4}} use the remover like so:
*
* PathRemover pr = new PathRemover("k2.v2");
* JSONObject cleanObject = pr.remove(new JSONObject(...));
*
* The resulting object 'cleanObject' would be {k0:{k3:v3}, k1:{k4:v4}}
*
* See unit tests for more examples
*
* @author [email protected]
*
*/
public class ElementRemover {
private Map elementsToRemove;
public ElementRemover(Map elementsToRemove) {
this.elementsToRemove = elementsToRemove == null ? Collections. emptyMap() : elementsToRemove;
}
public ElementRemover(JSONObject elementsToRemove) {
this.elementsToRemove = elementsToRemove == null ? Collections. emptyMap() : elementsToRemove;
}
public JSONObject remove(JSONObject objectToClean) {
JSONTraverseAction strategy = new RemoveElementsJsonAction(this.elementsToRemove);
JSONTraverser traversal = new JSONTraverser(strategy);
traversal.traverse(objectToClean);
return (JSONObject) strategy.result();
}
}