Introduction to JSONPath-Plus
JSONPath-Plus is a powerful extension of the original JSONPath library, offering additional features and improved flexibility for querying and manipulating JSON data. Whether you are dealing with simple JSON structures or complex nested JSON, JSONPath-Plus can help you extract and transform your data efficiently.
Key APIs and Their Usage
Basic Selectors
const jsonpath = require('jsonpath-plus'); const data = { "author": { "name": "John", "books": [ { "title": "Book 1" }, { "title": "Book 2" } ] } }; // Basic Property Selection console.log(jsonpath.JSONPath({ path: '$.author.name', json: data })); // Output: ['John'] // Wildcard Selection console.log(jsonpath.JSONPath({ path: '$.author.books[*].title', json: data })); // Output: ['Book 1', 'Book 2'] // Array Index Range console.log(jsonpath.JSONPath({ path: '$.author.books[0:1].title', json: data })); // Output: ['Book 1']
Filters
const data = { "store": { "book": [ { "category": "fiction", "price": 8.99 }, { "category": "non-fiction", "price": 12.99 } ] } }; // Filtering Based on Price console.log(jsonpath.JSONPath({ path: '$.store.book[?(@.price > 10)].category', json: data })); // Output: ['non-fiction']
Recursive Descent
const data = { "store": { "book": [ { "category": "fiction", "price": 8.99 }, { "category": "non-fiction", "price": 12.99 } ], "bicycle": { "type": "road", "price": 199.99 } } }; // Recursive Descent for Finding All Prices console.log(jsonpath.JSONPath({ path: '$..price', json: data })); // Output: [8.99, 12.99, 199.99]
Script Expressions
const data = { "values": [1, 2, 3, 4, 5] }; // Using Script Expressions console.log(jsonpath.JSONPath({ path: '$.values[(@.length-1)]', json: data })); // Output: [5]
Application Example
Let’s see an example of an application that uses JSONPath-Plus to handle a complex JSON structure.
const express = require('express'); const jsonpath = require('jsonpath-plus'); const app = express(); const data = { "users": [ { "name": "Alice", "age": 28 }, { "name": "Bob", "age": 34 }, { "name": "Charlie", "age": 25 } ] }; app.get('/usernames', (req, res) => { const usernames = jsonpath.JSONPath({ path: '$.users[*].name', json: data }); res.json(usernames); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
This application sets up a basic Express server and defines an endpoint that retrieves all usernames from a JSON data structure using JSONPath-Plus.
With these capabilities, JSONPath-Plus empowers developers to efficiently query and manipulate JSON data in a variety of scenarios.
Hash: 780db0a28d9bceaba3173af0683dac2ed70162b361ad558fe2d53d96c7df9776