Understanding the JSONPath Module: A Powerful Tool for Querying Data in Python

JSONPath is a query language designed to extract data from JSON structures, similar to how XPath is used for querying XML. In Python, the JSONPath module allows developers to efficiently perform queries on JSON data. This article provides an in-depth look at how to use this module with practical code examples.

What is JSONPath?

JSONPath is a syntax that enables users to navigate and extract specific elements from a JSON structure. It simplifies the process of retrieving information from complex data without writing extensive traversal code.

Basic Syntax of JSONPath

The syntax of JSONPath is intuitive and straightforward. Here are some common expressions:

  • $ : Root object
  • . : Current object
  • .. : Recursive search downward
  • * : Wildcard matching all elements
  • @ : Value of the current node
  • [] : Index operator
  • [start:end:step] : Array slicing
  • () : Expression operator

For more details, refer to the official JSONPath documentation.

Installing the JSONPath Module

Before using the module, ensure its installed. Use pip to install it as follows:

pip install jsonpath

Example Usage

Consider the following JSON data:

{
  "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
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  },
  "expensive": 10
}

Example 1: Retrieve Titles of All Books

import json
from jsonpath import jsonpath

data = '''
{
  "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
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  },
  "expensive": 10
}
'''

json_data = json.loads(data)
titles = jsonpath(json_data, '$.store.book[*].title')
print(titles)

Output:

['Sayings of the Century', 'Sword of Honour', 'Moby Dick']

Example 2: Retrieve Titles of Books with Price Less Than 10

prices_under_10 = jsonpath(json_data, '$..book[?(@.price < 10)].title')
print(prices_under_10)

Output:

['Sayings of the Century', 'Moby Dick']

Example 3: Retrieve Authors of Fiction Books

authors_and_prices = jsonpath(json_data, '$.store.book[?(@.category=="fiction")].author')
print(authors_and_prices)

Output:

['Evelyn Waugh', 'Herman Melville']

Example 4: Retrieve Titles of Books with Price Greater Than 10

expensive_books = jsonpath(json_data, '$..book[?(@.price > 10)].title')

print(expensive_books)

Output:

['Sword of Honour']

Example 5: Retrieve Items with Red Color

red_items = jsonpath(json_data, '$..*[?(@.color=="red")].*')
print(red_items)

Output:

['red', 19.95]

Tags: JSONPath python data-query JSON module

Posted on Fri, 21 Aug 2026 16:40:28 +0000 by cdjsjoe