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

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

Go to download

JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.

There is a newer version: 2.5.1
Show newest version
package net.minidev.json.actions;

import net.minidev.json.JSONArray;
import net.minidev.json.JSONObject;
import net.minidev.json.actions.path.DotDelimiter;
import net.minidev.json.actions.path.PathDelimiter;
import net.minidev.json.actions.traverse.JSONTraverser;
import net.minidev.json.actions.traverse.LocatePathsJsonAction;
import net.minidev.json.actions.traverse.JSONTraverseAction;

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

/**
 * Searches for paths in a {@link JSONObject} and returns those found.
 * 

* Traverses the specified {@link JSONObject} searching for nodes whose paths (from the root down) match * any of the user-specified paths. The paths that match are returned. *

* A path to locate 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. *

* * @author [email protected] */ public class PathLocator { protected List pathsToFind; protected PathDelimiter pathDelimiter = new DotDelimiter().withAcceptDelimiterInNodeName(false); public PathLocator(JSONArray pathsToFind) { if (pathsToFind == null || pathsToFind.isEmpty()) { this.pathsToFind = Collections.emptyList(); } else { this.pathsToFind = new ArrayList(); for (Object s : pathsToFind) { this.pathsToFind.add((String) s); } } } public PathLocator(List pathsToFind) { this.pathsToFind = pathsToFind == null || pathsToFind.size() == 0 ? Collections. emptyList() : pathsToFind; } public PathLocator(String... pathsToFind) { this.pathsToFind = pathsToFind == null || pathsToFind.length == 0 ? Collections. emptyList() : Arrays.asList(pathsToFind); } public PathLocator with(PathDelimiter pathDelimiter) { this.pathDelimiter = pathDelimiter; return this; } @SuppressWarnings("unchecked") public List locate(JSONObject object) { JSONTraverseAction action = new LocatePathsJsonAction(this.pathsToFind, pathDelimiter); JSONTraverser traversal = new JSONTraverser(action).with(pathDelimiter); traversal.traverse(object); return (List) action.result(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy