Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

JSONPath en APIs: Una guía sencilla

Las respuestas JSON complejas en APIs pueden ser abrumadoras, pero JSONPath lo simplifica. JSONPath permite extraer datos específicos fácilmente. ¿Qué es JSONPath y cómo usarlo en nuestro código? ¡Este artículo responde!

Daniel Costa

Daniel Costa

Updated on April 15, 2025

¿Alguna vez te has encontrado buscando en una respuesta JSON masiva, tratando de encontrar esa única pieza de datos que necesitas? Si es así, entonces sabes que puede ser un poco como buscar una aguja en un pajar. Presentamos JSONPath: una pequeña herramienta ingeniosa que puede hacer tu vida mucho más fácil al tratar con datos JSON en las APIs.

¿Qué es JSONPath?

JSONPath es un lenguaje de consulta para JSON, similar a XPath para XML. Te permite navegar y extraer partes específicas de tus datos JSON utilizando una sintaxis simple e intuitiva. Piensa en ello como una forma de ejecutar consultas en tus datos JSON y obtener exactamente lo que necesitas sin tener que examinar toda la respuesta.

¿Por qué usar JSONPath?

Imagina que tienes una enorme respuesta JSON de una API; todo lo que necesitas es el valor de un campo específico anidado en lo profundo. Sin JSONPath, normalmente tendrías que escribir un montón de código para analizar el JSON, lo que puede ser tedioso y propenso a errores. JSONPath simplifica esto al permitirte especificar exactamente lo que quieres extraer, haciendo que tu código sea más limpio y fácil de mantener.

¿Cómo funciona JSONPath?

JSONPath utiliza una sintaxis similar a la notación de objetos de JavaScript, con algunas características añadidas para consultas más complejas. Aquí tienes un resumen rápido de la sintaxis básica:

  • $: Representa el objeto o array raíz.
  • . o []: Operador hijo; se utiliza para acceder a una propiedad del objeto o a un elemento del array.
  • *: Comodín; coincide con todos los elementos o campos.
  • ..: Descenso recursivo; busca nodos coincidentes en cualquier nivel.
  • ?(): Aplica un filtro (la expresión debe evaluarse como verdadera).
  • (): Expresión de script, utilizando el motor de script subyacente.

Profundicemos en algunos ejemplos para ver JSONPath en acción.

Ejemplos básicos de JSONPath

Considera los siguientes datos JSON de una API de base de datos de películas:

{
  "movies": {
    "action": [
      { "title": "Mad Max: Fury Road", "director": "George Miller", "year":                  2015, "rating": 8.1 },
      { "title": "John Wick", "director": "Chad Stahelski", "year": 2014,                     "rating": 7.4 }
    ],
    "drama": [
      { "title": "The Shawshank Redemption", "director": "Frank Darabont",                   "year": 1994, "rating": 9.3 },
      { "title": "Forrest Gump", "director": "Robert Zemeckis", "year":                       1994, "rating": 8.8 }
    ],
    "comedy": [
      { "title": "The Grand Budapest Hotel", "director": "Wes Anderson",                     "year": 2014, "rating": 8.1 }
    ]
  }
}

Extracción de todas las películas de acción:

$.movies.action[*]

Esto te dará un array de todos los objetos de películas de acción.

Extracción de los títulos de todas las películas de drama:

$.movies.drama[*].title

Esto devolverá un array de los títulos de todas las películas de drama: ["The Shawshank Redemption", "Forrest Gump"].

Extracción de la calificación de "Mad Max: Fury Road":

$.movies.action[?(@.title == "Mad Max: Fury Road")].rating

Esto devolverá la calificación de "Mad Max: Fury Road": 8.1.

Búsqueda de todas las películas estrenadas en 2014:

$.movies..[?(@.year == 2014)]

Esto devolverá todas las películas estrenadas en 2014, que en este caso son: ["John Wick", "The Grand Budapest Hotel"].

JSONPath en las APIs

Usar JSONPath en las APIs es increíblemente útil cuando quieres extraer información específica de una respuesta JSON. Muchos lenguajes de programación y herramientas tienen bibliotecas que soportan JSONPath, lo que facilita su integración en tus proyectos.

Por ejemplo, en Javascript, puedes usar la biblioteca jsonpath:

const jsonpath = require('jsonpath');

// Sample JSON data
const data = {
  movies: {
    action: [
      { title: "Mad Max: Fury Road", director: "George Miller", year: 2015, rating: 8.1 },
      { title: "John Wick", director: "Chad Stahelski", year: 2014, rating: 7.4 }
    ],
    drama: [
      { title: "The Shawshank Redemption", director: "Frank Darabont", year: 1994, rating: 9.3 },
      { title: "Forrest Gump", director: "Robert Zemeckis", year: 1994, rating: 8.8 }
    ],
    comedy: [
      { title: "The Grand Budapest Hotel", director: "Wes Anderson", year: 2014, rating: 8.1 }
    ]
  }
};

// Extracting titles of all drama movies
const titles = jsonpath.query(data, '$.movies.drama[*].title');
console.log(titles); // Output: ["The Shawshank Redemption", "Forrest Gump"]

De manera similar, en Python, puedes usar la biblioteca jsonpath-ng:

from jsonpath_ng import jsonpath, parse

# Sample JSON data
data = {
    "movies": {
        "action": [
            {"title": "Mad Max: Fury Road", "director": "George Miller", "year": 2015, "rating": 8.1},
            {"title": "John Wick", "director": "Chad Stahelski", "year": 2014, "rating": 7.4}
        ],
        "drama": [
            {"title": "The Shawshank Redemption", "director": "Frank Darabont", "year": 1994, "rating": 9.3},
            {"title": "Forrest Gump", "director": "Robert Zemeckis", "year": 1994, "rating": 8.8}
        ],
        "comedy": [
            {"title": "The Grand Budapest Hotel", "director": "Wes Anderson", "year": 2014, "rating": 8.1}
        ]
    }
}

# Extracting titles of all drama movies
jsonpath_expr = parse('$.movies.drama[*].title')
titles = [match.value for match in jsonpath_expr.find(data)]
print(titles)  # Output: ["The Shawshank Redemption", "Forrest Gump"]

Usando JSONPath en Apidog

An Image showing the dashboard of Apidog

Apidog es una herramienta versátil diseñada para simplificar el proceso de trabajar con APIs, y soporta JSONPath de forma nativa.

Aquí te mostramos cómo Apidog puede ayudarte a aprovechar el poder de JSONPath de manera efectiva:

Primero, necesitarás enviar solicitudes a tus APIs y ver las respuestas directamente con Apidog. Luego puedes usar la interfaz proporcionada para aplicar una consulta JSONPath para extraer los títulos de todas las películas de acción de la respuesta.

Apidog's Post Processcers Page

De la captura de pantalla anterior, verás que (1) enviamos una solicitud GET a nuestro servidor - Creé un servidor express simple usando los datos JSON que obtuvimos arriba como respuesta. Luego cambié a la pestaña Post Processors (2), y agregué un nuevo proceso - Extract Variable (3).

Al hacer clic en Extract Variable, se te mostrará la siguiente página;

Apidog's Extract JsonPath Config Page

Puedes establecer un nombre de variable (1) si quieres. Las variables son útiles si quieres monitorear o construir diferentes APIs y necesitas un solo lugar para administrar la configuración general. Las variables aquí son como archivos .env.

El otro paso es escribir el JSONPath que quieres filtrar (2). En nuestro caso aquí, queremos obtener los títulos de las películas en el array de acción de nuestro JSON. Una vez que escribas la ruta actualmente, haz clic en el botón de flecha (3) para abrir la página de respuesta de la consulta como se muestra a continuación.

jsonpath response apidog

Como puedes ver en la respuesta anterior, Apidog filtró los títulos de las películas en el array de acción y nos los mostró.

Si quieres probar esto, entonces asegúrate de descargar e instalar Apidog y enviar tu primera solicitud con él.

button

Conclusión

JSONPath es una herramienta invaluable para navegar y extraer datos de respuestas JSON en APIs. Simplifica el proceso de trabajar con estructuras JSON complejas, haciendo que tu flujo de trabajo de desarrollo sea más eficiente. Al integrar JSONPath con herramientas como Apidog, puedes filtrar y recuperar fácilmente los datos exactos que necesitas, mejorando tus procesos de prueba y depuración de APIs. Ya sea que estés extrayendo títulos de películas, filtrando registros específicos o validando respuestas, JSONPath ofrece una forma clara y concisa de manejar datos JSON. Pruébalo en tu próximo proyecto y experimenta la simplicidad optimizada que aporta.

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)Tutoriales

Cómo usar Lovable AI (Alternativa a Cursor para desarrolladores web)

Aprende a crear cualquier web con Lovable en esta guía completa. Descubre procesos paso a paso, funciones innovadoras e integra herramientas gratuitas como Apidog para gestión API.

Daniel Costa

April 15, 2025

Cómo usar n8n con servidores MCPTutoriales

Cómo usar n8n con servidores MCP

Automatiza flujos con n8n y servidores MCP para IA. Guía técnica: configuración, APIs, nodo "MCP Server Trigger" y Apidog para pruebas.

Daniel Costa

April 14, 2025

Cómo añadir claves API personalizadas a Cursor: Una guía completaTutoriales

Cómo añadir claves API personalizadas a Cursor: Una guía completa

Este tutorial te guiará para configurar y gestionar claves API personalizadas en Cursor (OpenAI, Anthropic, Google y Azure).

Daniel Costa

April 11, 2025