diff --git a/json-path/pom.xml b/json-path/pom.xml
new file mode 100644
index 0000000000..9a86431ffe
--- /dev/null
+++ b/json-path/pom.xml
@@ -0,0 +1,51 @@
+
+ 4.0.0
+ org.baeldung
+ json-path
+ 0.0.1-SNAPSHOT
+ json-path
+
+
+
+
+ com.jayway.jsonpath
+ json-path
+ ${json-path.version}
+
+
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+ runtime
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+ runtime
+
+
+
+
+
+ 2.1.0
+
+
+ 4.12
+
+
+ 1.7.14
+ 1.1.3
+
+
\ No newline at end of file
diff --git a/json-path/src/main/resources/intro_api.json b/json-path/src/main/resources/intro_api.json
new file mode 100644
index 0000000000..8a252f2971
--- /dev/null
+++ b/json-path/src/main/resources/intro_api.json
@@ -0,0 +1,57 @@
+{
+ "tool":
+ {
+ "jsonpath":
+ {
+ "creator":
+ {
+ "name": "Jayway Inc.",
+ "location":
+ [
+ "Malmo",
+ "Stockholm",
+ "Copenhagen",
+ "San Francisco",
+ "Karlskrona",
+ "Halmstad",
+ "Helsingborg"
+ ]
+ },
+
+ "current release": "2.1"
+ }
+ },
+
+ "book":
+ [
+ {
+ "title": "Beginning JSON",
+ "author": "Ben Smith",
+ "price": 49.99
+ },
+
+ {
+ "title": "JSON at Work",
+ "author": "Tom Marrs",
+ "price": 29.99
+ },
+
+ {
+ "title": "Learn JSON in a DAY",
+ "author": "Acodemy",
+ "price": 8.99
+ },
+
+ {
+ "title": "JSON: Questions and Answers",
+ "author": "George Duckett",
+ "price": 6.00
+ }
+ ],
+
+ "price range":
+ {
+ "cheap": 10.00,
+ "medium": 20.00
+ }
+}
\ No newline at end of file
diff --git a/json-path/src/main/resources/intro_service.json b/json-path/src/main/resources/intro_service.json
new file mode 100644
index 0000000000..448492463a
--- /dev/null
+++ b/json-path/src/main/resources/intro_service.json
@@ -0,0 +1,61 @@
+[
+ {
+ "id": 1,
+ "title": "Casino Royale",
+ "director": "Martin Campbell",
+ "starring":
+ [
+ "Daniel Craig",
+ "Eva Green"
+ ],
+
+ "desc": "Twenty-first James Bond movie",
+ "release date": 1163466000000,
+ "box office": 594275385
+ },
+
+ {
+ "id": 2,
+ "title": "Quantum of Solace",
+ "director": "Marc Forster",
+ "starring":
+ [
+ "Daniel Craig",
+ "Olga Kurylenko"
+ ],
+
+ "desc": "Twenty-second James Bond movie",
+ "release date": 1225242000000,
+ "box office": 591692078
+ },
+
+ {
+ "id": 3,
+ "title": "Skyfall",
+ "director": "Sam Mendes",
+ "starring":
+ [
+ "Daniel Craig",
+ "Naomie Harris"
+ ],
+
+ "desc": "Twenty-third James Bond movie",
+ "release date": 1350954000000,
+ "box office": 1110526981
+ },
+
+ {
+ "id": 4,
+ "title": "Spectre",
+ "director": "Sam Mendes",
+ "starring":
+ [
+ "Daniel Craig",
+ "Lea Seydoux"
+ ],
+
+ "desc": "Twenty-fourth James Bond movie",
+ "release date": 1445821200000,
+ "box office": 879376275
+ }
+]
\ No newline at end of file
diff --git a/json-path/src/test/java/org/baeldung/jsonpath/introduction/OperationTest.java b/json-path/src/test/java/org/baeldung/jsonpath/introduction/OperationTest.java
new file mode 100644
index 0000000000..9347a7f754
--- /dev/null
+++ b/json-path/src/test/java/org/baeldung/jsonpath/introduction/OperationTest.java
@@ -0,0 +1,71 @@
+package org.baeldung.jsonpath.introduction;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.CoreMatchers.not;
+
+import org.junit.Test;
+
+import java.io.InputStream;
+import java.util.List;
+import java.util.Map;
+import java.util.Scanner;
+
+import com.jayway.jsonpath.Criteria;
+import com.jayway.jsonpath.DocumentContext;
+import com.jayway.jsonpath.Filter;
+import com.jayway.jsonpath.JsonPath;
+import com.jayway.jsonpath.Predicate;
+
+public class OperationTest {
+ InputStream jsonInputStream = this.getClass().getClassLoader().getResourceAsStream("intro_api.json");
+ String jsonDataSourceString = new Scanner(jsonInputStream, "UTF-8").useDelimiter("\\Z").next();
+
+ @Test
+ public void givenJsonPathWithoutPredicates_whenReading_thenCorrect() {
+ String jsonpathCreatorNamePath = "$['tool']['jsonpath']['creator']['name']";
+ String jsonpathCreatorLocationPath = "$['tool']['jsonpath']['creator']['location'][*]";
+
+ DocumentContext jsonContext = JsonPath.parse(jsonDataSourceString);
+ String jsonpathCreatorName = jsonContext.read(jsonpathCreatorNamePath);
+ List jsonpathCreatorLocation = jsonContext.read(jsonpathCreatorLocationPath);
+
+ assertEquals("Jayway Inc.", jsonpathCreatorName);
+ assertThat(jsonpathCreatorLocation.toString(), containsString("Malmo"));
+ assertThat(jsonpathCreatorLocation.toString(), containsString("San Francisco"));
+ assertThat(jsonpathCreatorLocation.toString(), containsString("Helsingborg"));
+ }
+
+ @Test
+ public void givenJsonPathWithFilterPredicate_whenReading_thenCorrect() {
+ Filter expensiveFilter = Filter.filter(Criteria.where("price").gt(20.00));
+ List