All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.minidev.json.actions.PathRemover Maven / Gradle / Ivy

package net.minidev.json.actions;

import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import net.minidev.json.actions.traverse.JSONTraverser;
import net.minidev.json.actions.traverse.RemovePathsJsonAction;
import net.minidev.json.actions.traverse.JSONTraverseAction;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * Removes branches of nodes from a {@link JSONObject} matching the list of user-specified paths.
 * 

* A path to remove must be specified in the n-gram format - a list of keys from the root down separated by dots: * K0[[[[.K1].K2].K3]...] *
* A key to the right of a dot is a direct child of a key to the left of a dot. Keys with a dot in their name are * not supported. *

* Usage Example: *

* To remove the field k1.k2 from the {@link JSONObject} {k1:{k2:v2}, k3:{k4:v4}} use the remover like so: *

 * PathRemover pr = new PathRemover("k1.k2");
 * JSONObject cleanObject = pr.remove(new JSONObject(...));
 * 
* The resulting object 'cleanObject' would be {k1:{k3:{k4:v4}}} *

* See unit tests for more examples * * @author [email protected] * */ public class PathRemover { protected List pathsToRemove; public PathRemover(JSONArray pathsToRemove) { if (pathsToRemove == null || pathsToRemove.isEmpty()) { this.pathsToRemove = Collections.emptyList(); } else { this.pathsToRemove = new ArrayList(); for (Object s : pathsToRemove) { this.pathsToRemove.add((String) s); } } } public PathRemover(List pathsToRemove) { this.pathsToRemove = pathsToRemove == null || pathsToRemove.size() == 0 ? Collections. emptyList() : pathsToRemove; } public PathRemover(String... pathsToRemove) { this.pathsToRemove = pathsToRemove == null || pathsToRemove.length == 0 ? Collections. emptyList() : Arrays.asList(pathsToRemove); } public JSONObject remove(JSONObject objectToClean) { JSONTraverseAction strategy = new RemovePathsJsonAction(this.pathsToRemove); JSONTraverser traversal = new JSONTraverser(strategy); traversal.traverse(objectToClean); return (JSONObject) strategy.result(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy