Showing 8 of 94 related tools
Get up and running in 30 seconds
Input JSON object or array from API responses, configuration files, or data exports. Tool parses and validates JSON showing tree structure. Supports nested objects, arrays, and complex data hierarchies.
Click through interactive JSON tree expanding objects and arrays. Visual hierarchy shows data organization. Hover over nodes seeing paths and values. Search functionality finds keys or values instantly.
Click any node copying its JSONPath expression ($.path.to.data) or actual value. Choose path format: dot notation (data.user.name), bracket notation (["data"]["user"]), or JSONPath syntax ($..name).
Paste copied paths into data processing scripts, API queries, or jq commands. JSONPath expressions extract specific data from complex nested structures without manual traversal.
Understanding JSONPath querying and navigation
JSONPath is query language for JSON data enabling precise extraction of values from complex nested structures. Similar to XPath for XML, JSONPath uses path expressions ($.store.book[0].title) referencing specific locations in JSON documents. Instead of manually traversing objects and arrays with multiple bracket/dot accesses, JSONPath provides declarative syntax selecting data by pattern matching.
Modern applications process JSON everywhere - API responses, configuration files, database documents, log data. Extracting specific values from deeply nested JSON is tedious and error-prone. JSONPath expressions describe what data you want, not how to get it. Tools use JSONPath specifications querying data without custom traversal code.
API Response Parsing: REST APIs return nested JSON responses. Extracting specific fields requires knowing exact path. Instead of writing response.data.users[0].profile.email, use JSONPath $.data.users[0].profile.email in queries or jq commands. JSONPath expressions transfer between tools - same expression works in JavaScript libraries, command-line jq, or API testing tools.
Configuration File Querying: Application config, CI/CD pipelines, or Kubernetes manifests use JSON/YAML. Finding specific configuration values in large files requires precise paths. JSONPath expressions locate settings without manually searching nested structures. Automated scripts query config files extracting values for validation or deployment.
Data Transformation and ETL: Extract-Transform-Load pipelines process JSON from APIs, databases, or file imports. JSONPath expressions select source data fields for transformation. Map API response fields to database columns using JSONPath describing source locations. Declarative data mapping versus imperative code traversal.
Log Analysis and Debugging: Structured logs output JSON events. Analyzing logs requires filtering and extracting specific fields. JSONPath queries select error messages, timestamps, or user IDs from log entries. Command-line tools (jq) use JSONPath-like syntax filtering JSON log streams in real-time.
Testing and Assertions: API integration tests verify response structure and values. JSONPath expressions assert specific fields exist and contain expected values. Test frameworks use JSONPath selecting elements for validation: expect(jsonpath.query(response, '$.data.status')).toBe('success').
Root Object ($): Every JSONPath expression starts with $ representing entire JSON document. $ alone selects root object/array. All paths relative to root.
Dot Notation (.): $.store.book accesses nested object properties. Dot separates keys traversing object hierarchy. Clean syntax for simple paths without special characters.
Bracket Notation ([]): $['store']['book'] accesses properties using bracket syntax. Required for keys with spaces, special characters, or starting with numbers. Equivalent to dot notation for standard keys.
Array Access ([index]): $.store.book[0] selects first array element (zero-indexed). $.store.book[2] selects third element. Negative indices access from end: [-1] selects last element.
Wildcard (*): $.store.book[*].title selects all titles from every book in array. Wildcard matches any key/index returning array of matching values.
Recursive Descent (..): $..author finds all author fields anywhere in document regardless of nesting depth. Searches entire tree recursively returning array of matches. Powerful for unknown structures.
Array Slicing ([start:end]): $.store.book[0:2] selects elements 0 and 1 (end exclusive). [1:] selects from index 1 to end. [:3] selects first three elements. Python-like slice syntax.
Filter Expressions ([?(...)]): $.store.book[?(@.price < 10)] filters array elements matching condition. @ represents current element in filter. Supports comparisons (<, >, ==, !=) and logical operators (&&, ||).
JavaScript Object Access: data.users[0].name is code executed in JavaScript. Requires language runtime. Breaks if path doesn't exist (undefined errors).
JSONPath Expression: $.users[0].name is declarative query string. Language-agnostic - works in JavaScript, Python, Go, jq, or any JSONPath library. Returns null/empty for missing paths instead of errors. Transferable between tools and platforms.
Use Cases: Object notation for one-time access in code. JSONPath for configurable queries, dynamic data extraction, cross-platform data processing, or user-defined path specifications.
This tool provides interactive JSON tree visualization with instant path generation. Click any node copying JSONPath expression or value. Search finds keys/values in complex documents. Supports multiple path formats (dot, bracket, JSONPath). All processing client-side - your JSON data stays private.
Multiple Results: Wildcard and recursive descent return arrays. $..price might return [9.99, 12.99, 8.99] finding all price fields. Filter expressions return arrays of matching objects. Handle multiple results in processing code.
Combining Operators: $..book[?(@.price < 10)].title combines recursive descent, filtering, and property access. Find all book titles where price under 10, anywhere in document. Complex queries built composing operators.
Existence Checks: $..author returns empty array if no author fields exist. Check result length validating field existence in dynamic structures.
Comparison with jq: Command-line tool jq uses JSONPath-like syntax with extensions. jq expressions often translate directly to JSONPath. jq '.users[0].name' = JSONPath $.users[0].name. Learning JSONPath helps understand jq queries.
How developers use JSONPath
Command-line API testing uses jq parsing JSON responses. JSONPath expressions translate to jq syntax selecting specific fields from complex API responses. Visual JSONPath explorer helps construct correct paths for jq commands.
# API returns nested user data
curl https://api.example.com/users/123 | jq
# Response (simplified):
{
"data": {
"user": {
"id": 123,
"profile": {
"name": "Alex Developer",
"email": "alex@example.com",
"roles": ["admin", "developer"]
},
"settings": {
"theme": "dark",
"notifications": true
}
}
}
}
# Extract email using JSONPath β jq syntax
# JSONPath: $.data.user.profile.email
# jq: '.data.user.profile.email'
curl https://api.example.com/users/123 | jq '.data.user.profile.email'
# Output: "alex@example.com"
# Extract all roles (array)
# JSONPath: $.data.user.profile.roles[*]
# jq: '.data.user.profile.roles[]'
curl https://api.example.com/users/123 | jq '.data.user.profile.roles[]'
# Output: "admin"
# "developer"
# Extract first role
# JSONPath: $.data.user.profile.roles[0]
# jq: '.data.user.profile.roles[0]'
curl https://api.example.com/users/123 | jq '.data.user.profile.roles[0]'
# Output: "admin"
# Use JSONPath explorer to find correct paths
# Paste API response, click fields, copy JSONPath
# Convert to jq syntax for command-line useKubernetes manifests and live resources output JSON. kubectl supports JSONPath extracting specific fields from complex resource definitions. Use JSONPath explorer finding paths in example resources, then query production clusters.
# Get pod status using JSONPath
# First, inspect pod JSON structure
kubectl get pod my-pod -o json > pod.json
# Paste into JSONPath explorer finding paths:
# Pod status: $.status.phase
# Container image: $.spec.containers[0].image
# Node name: $.spec.nodeName
# Query live pod with JSONPath
kubectl get pod my-pod -o jsonpath='{.status.phase}'
# Output: Running
# Get all container images in pod
kubectl get pod my-pod -o jsonpath='{.spec.containers[*].image}'
# Output: nginx:1.21 sidecar:latest
# Get pod IPs from all pods
kubectl get pods -o jsonpath='{.items[*].status.podIP}'
# Output: 10.0.1.5 10.0.1.6 10.0.1.7
# Complex query: pod name + status
kubectl get pods -o jsonpath='{range .items[*]}{.metadata.name}{" "}{.status.phase}{"\n"}{end}'
# Output:
# pod-1 Running
# pod-2 Pending
# pod-3 Failed
# JSONPath explorer helps construct these queries
# Explore example resource, find paths, use in kubectlETL pipelines transform JSON from source APIs to target database format. JSONPath expressions map source fields to destination without hardcoded traversal. Config-driven transformations using JSONPath specifications.
// Data transformation config using JSONPath
const transformConfig = {
mappings: [
{
source: "$.data.user.profile.email",
destination: "email",
type: "string"
},
{
source: "$.data.user.profile.name",
destination: "full_name",
type: "string"
},
{
source: "$.data.user.settings.theme",
destination: "preferences.theme",
type: "string"
},
{
source: "$.data.user.profile.roles[0]",
destination: "primary_role",
type: "string"
}
]
};
// Generic transformer using JSONPath
import jsonpath from 'jsonpath';
function transformData(sourceJSON, config) {
const result = {};
config.mappings.forEach(mapping => {
// Extract value using JSONPath
const values = jsonpath.query(
sourceJSON,
mapping.source
);
if (values.length > 0) {
// Set destination field
setNestedValue(
result,
mapping.destination,
values[0]
);
}
});
return result;
}
// Example source data (API response)
const apiResponse = {
data: {
user: {
profile: {
name: "Alex Developer",
email: "alex@example.com",
roles: ["admin", "developer"]
},
settings: { theme: "dark" }
}
}
};
const transformed = transformData(apiResponse, transformConfig);
// Output:
// {
// email: "alex@example.com",
// full_name: "Alex Developer",
// preferences: { theme: "dark" },
// primary_role: "admin"
// }
// Config-driven transformation
// Change mappings without modifying code
// JSONPath explorer helps define source pathsIntegration tests verify API responses contain expected fields and values. JSONPath expressions select data for assertions checking structure, types, and content. Clean test syntax using declarative path specifications.
// Jest/Mocha API integration test with JSONPath
import jsonpath from 'jsonpath';
import { expect } from 'chai';
describe('User API Tests', () => {
let response;
beforeEach(async () => {
response = await fetch('/api/users/123').then(r => r.json());
});
it('should return user email', () => {
const email = jsonpath.query(
response,
'$.data.user.profile.email'
)[0];
expect(email).to.equal('alex@example.com');
});
it('should return admin role', () => {
const roles = jsonpath.query(
response,
'$.data.user.profile.roles[*]'
);
expect(roles).to.include('admin');
});
it('should have valid theme setting', () => {
const theme = jsonpath.query(
response,
'$.data.user.settings.theme'
)[0];
expect(['light', 'dark', 'auto']).to.include(theme);
});
it('should have all required fields', () => {
const requiredPaths = [
'$.data.user.id',
'$.data.user.profile.name',
'$.data.user.profile.email',
'$.data.user.settings'
];
requiredPaths.forEach(path => {
const result = jsonpath.query(response, path);
expect(result.length).to.be.greaterThan(0,
`Missing required field: ${path}`
);
});
});
});
// JSONPath makes tests declarative and readable
// Easily verify deeply nested response structure
// Use JSONPath explorer to find test assertion pathsMaster JSON data extraction
This tool provides interactive JSON tree visualization with instant JSONPath generation. Navigate complex JSON structures visually, copy paths for use in code, queries, or data transformations.
Paste JSON into input field or upload JSON file. Tool validates and parses JSON showing error messages for invalid syntax. Supports objects, arrays, and deeply nested structures. Large JSON files (megabytes) may slow browser - consider extracting relevant sections first.
After parsing, interactive tree displays JSON structure. Objects show expandable key-value pairs. Arrays show indexed elements. Nested structures indent showing hierarchy. Syntax highlighting colors different value types (strings, numbers, booleans, null).
Click expand/collapse icons opening nested objects and arrays. Nested structures show indentation levels. Hover over nodes highlighting current path and showing value preview. Search box filters tree showing only matching keys or values - useful for finding specific fields in large documents.
Tree view shows value types: objects {}, arrays [], strings "text", numbers 123, booleans true/false, null. Type indicators help understand data structure at glance. Click any node selecting it, highlighting path from root.
Click node displaying actions: copy path, copy value. Path copies JSONPath expression for selected node. Value copies actual data (formatted JSON for objects/arrays, plain values for primitives).
Choose path format from dropdown:
Dot Notation: data.user.profile.name - JavaScript object access syntax. Clean for code. Requires valid identifier keys (no spaces/special chars).
Bracket Notation: ["data"]["user"]["profile"]["name"] - Handles any key including spaces and special characters. Always safe but verbose.
JSONPath: $.data.user.profile.name - Standard JSONPath syntax with $ root. Use in jq, JSONPath libraries, or query tools. Most portable across platforms.
Type in search box filtering tree to matching nodes. Search finds keys (property names) or values (string content, numbers). Large JSON documents with hundreds of fields become manageable - search finds specific data instantly.
Search highlights matches in tree. Click search result jumping to that location. Clear search showing full tree again. Case-insensitive search matches partial strings.
API Development: Paste API response, explore structure, copy paths for documentation or code. Verify response schema by inspecting all nested fields.
jq Command Building: Paste JSON sample, find target field in tree, copy JSONPath, convert to jq syntax (remove $, wrap in quotes). Test jq command on sample before using in pipeline.
Config File Navigation: Load large configuration JSON, search for specific setting, copy path for modification scripts or documentation.
Data Validation: Upload JSON data, visually inspect structure checking all required fields exist, verify value types match expectations.
Everything you need to know
Your data never leaves your browser
Your JSON data never leaves your browser. This JSONPath explorer operates entirely client-side using JavaScript JSON parsing and tree rendering. Zero server uploads, zero data transmission, zero logging.
Safe for exploring confidential API responses, proprietary configuration files, sensitive database exports, customer data samples, or any private JSON requiring path extraction without privacy concerns.
Performance metrics