How to Get all jsonpaths from JSON: In this tutorial will see code to get all JSON paths from a JSON object.
A JSON path expression is used to extract the value from the JSON object.
Add below dependency to your project.
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160212</version> </dependency>
Then Create Class with JSONPathmain class name then use below code.
import org.json.JSONException; public class JSONPathmain { public static void main(String[] args) throws JSONException { // TODO Auto-generated method stub String json ="{ \"store\": {\"book\": [ { \"category\": \"reference\",\"author\": \"Nigel Rees\",\"title\": \"Sayings of the Century\",\"price\": 8.95},{ \"category\": \"fiction\",\"author\": \"Evelyn Waugh\",\"title\": \"Sword of Honour\",\"price\": 12.99},{ \"category\": \"fiction\",\"author\": \"Herman Melville\",\"title\": \"Moby Dick\",\"isbn\": \"0-553-21311-3\",\"price\": 8.99},{ \"category\": \"fiction\",\"author\": \"J. R. R. Tolkien\",\"title\": \"The Lord of the Rings\",\"isbn\": \"0-395-19395-8\",\"price\": 22.99}],\"bicycle\": {\"color\": \"red\",\"price\": 19.95}}}"; JsonParser parser = new JsonParser(json); System.out.println(parser.getPathList()); } }
Next, Create Another class with name JsonParser and use below code
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; public class JsonParser { private List<String> pathList; private String json; public JsonParser(String json) throws JSONException { this.json = json; this.pathList = new ArrayList<String>(); setJsonPaths(json); } public List<String> getPathList() { return this.pathList; } private void setJsonPaths(String json) throws JSONException { this.pathList = new ArrayList<String>(); JSONObject object = new JSONObject(json); String jsonPath = "$"; if(json != JSONObject.NULL) { readObject(object, jsonPath); } } private void readObject(JSONObject object, String jsonPath) throws JSONException { Iterator<String> keysItr = object.keys(); String parentPath = jsonPath; while(keysItr.hasNext()) { String key = keysItr.next(); Object value = object.get(key); jsonPath = parentPath + "." + key; if(value instanceof JSONArray) { readArray((JSONArray) value, jsonPath); } else if(value instanceof JSONObject) { readObject((JSONObject) value, jsonPath); } else { // is a value this.pathList.add(jsonPath); } } } private void readArray(JSONArray array, String jsonPath) throws JSONException { String parentPath = jsonPath; for(int i = 0; i < array.length(); i++) { Object value = array.get(i); jsonPath = parentPath + "[" + i + "]"; if(value instanceof JSONArray) { readArray((JSONArray) value, jsonPath); } else if(value instanceof JSONObject) { readObject((JSONObject) value, jsonPath); } else { // is a value this.pathList.add(jsonPath); } } } }
Change your JSON Object in JSONPathmain class and run java class to see the output.
Also Read: How to Create JSON Web Token (JWT) using Java
How to Get all JSON Paths from JSON