JSON Path Tester
Una herramienta para probar expresiones JSONPath y extraer valores deseados de datos JSON. ¡Una herramienta esencial para el análisis de respuestas de API y análisis de datos!
Result will appear here...
Common Patterns
Root
$Root object
All Books
$.store.book[*]All books in store
First Book
$.store.book[0]First book
Last Book
$.store.book[-1]Last book
Book Titles
$.store.book[*].titleAll book titles
Books < $10
$.store.book[?(@.price < 10)]Books cheaper than $10
Books with ISBN
$.store.book[?(@.isbn)]Books with ISBN
All Prices
$.store..priceAll prices (recursive)
Syntax Guide:
$- Root object@- Current object.or[]- Child operator..- Recursive descent*- Wildcard[start:end]- Array slice[?(<expr>)]- Filter expression
¿Qué es JSONPath?
JSONPath es un lenguaje de expresiones para consultar valores en estructuras de datos JSON. Al igual que XPath lo hace para XML, JSONPath te permite extraer datos específicos de JSON.
Sintaxis principal
Operadores básicos
| Operador | Descripción | Ejemplo |
|---|---|---|
$ | Objeto raíz | $ |
@ | Objeto actual (dentro de filtro) | @.price |
. o [] | Elemento hijo | $.store.book |
.. | Búsqueda recursiva | $..price |
* | Comodín | $.store.* |
[n] | Índice de array | $.store.book[0] |
[start:end] | Porción de array | $.store.book[0:2] |
[?(<expr>)] | Expresión de filtro | $..book[?(@.price < 10)] |
Indexación de arrays
// Primer elemento
$.store.book[0]
// Último elemento
$.store.book[-1]
// Rango (desde 0 hasta antes del índice 2)
$.store.book[0:2]
// Todos los elementos
$.store.book[*]
Expresiones de filtro
// Libros con precio menor a 10
$.store.book[?(@.price < 10)]
// Libros que tienen ISBN
$.store.book[?(@.isbn)]
// Libros de categoría fiction
$.store.book[?(@.category === 'fiction')]
// Libros con palabra específica en el título
$.store.book[?(@.title.includes('Moby'))]
Ejemplos prácticos
Extracción de datos de respuesta API
// Respuesta API
{
"users": [
{ "id": 1, "name": "John", "active": true },
{ "id": 2, "name": "Jane", "active": false },
{ "id": 3, "name": "Bob", "active": true }
]
}
// Extraer solo usuarios activos
$.users[?(@.active === true)]
// Todos los nombres de usuario
$.users[*].name
Navegación en datos anidados
// JSON complejo
{
"company": {
"departments": [
{
"name": "Engineering",
"employees": [
{ "name": "Alice", "salary": 100000 },
{ "name": "Bob", "salary": 90000 }
]
},
{
"name": "Sales",
"employees": [
{ "name": "Charlie", "salary": 80000 }
]
}
]
}
}
// Todos los salarios de empleados
$..employees[*].salary
// Empleados con salario >= 90000
$..employees[?(@.salary >= 90000)]
Procesamiento de datos de array
// Datos de comercio electrónico
{
"products": [
{ "name": "Laptop", "price": 1000, "stock": 5 },
{ "name": "Mouse", "price": 20, "stock": 0 },
{ "name": "Keyboard", "price": 50, "stock": 10 }
]
}
// Productos en stock
$.products[?(@.stock > 0)]
// Rango de precios (20 ~ 100)
$.products[?(@.price >= 20 && @.price <= 100)]
Casos de uso
1. Pruebas y depuración de API
// Extraer mensajes de error de respuesta GraphQL
$.errors[*].message
// Datos de paginación de API REST
$.data.items[*]
2. Análisis de datos
// Filtrar datos por condiciones específicas
$..transactions[?(@.amount > 1000)]
// Recopilar datos estadísticos
$..metrics[*].value
3. Análisis de archivos de configuración
// Extraer configuración de entorno específica
$.environments[?(@.name === 'production')]
// Banderas de funcionalidad habilitadas
$.features[?(@.enabled === true)].name
4. Análisis de registros
// Filtrar solo registros de error
$.logs[?(@.level === 'error')]
// Registros en rango de tiempo específico
$.logs[?(@.timestamp > 1234567890)]
Operadores de comparación
Operadores disponibles en filtros JSONPath:
===- Igual!==- No igual<- Menor que<=- Menor o igual que>- Mayor que>=- Mayor o igual que&&- AND||- OR
Consejos de uso
1. Prueba paso a paso
Prueba rutas complejas dividiéndolas:
// Paso 1: $.store
// Paso 2: $.store.book
// Paso 3: $.store.book[*]
// Paso 4: $.store.book[*].title
2. Uso de búsqueda recursiva
Usa .. cuando la estructura sea desconocida:
// Encontrar todos los campos price
$..price
3. Combinación de filtros
Combina múltiples condiciones:
$..book[?(@.price < 10 && @.category === 'fiction')]
Notas importantes
- Las expresiones JSONPath distinguen entre mayúsculas y minúsculas
- Usa
@para referenciar el objeto actual dentro de expresiones de filtro - El corte de arrays funciona de manera similar a Python (inicio inclusivo, fin exclusivo)
- La sintaxis puede variar ligeramente entre diferentes implementaciones
Herramientas relacionadas
- JSON Formatter - Formateo de JSON
- API Tester - Pruebas de API
- Regex Tester - Pruebas de expresiones regulares
Recursos adicionales
- Documentación oficial de JSONPath
- JSONPath Plus - Biblioteca en uso