---
title: "Selector JSONPath"
description: "Selector JSONPath"
type: "academy"
category: "lesson"
tags: []
authors: [Anonymous]
date: "2026-10-08"
last_update: "2026-10-08"
time_minutes: 3
draft: false
unlisted: false
url: "https://www.billmysales.com/academy/leer-datos-de-json-con-selectores/json-path/selector-json-path"
---

# Selector JSONPath

Consideraremos el siguiente JSON como base para todos los ejemplos de esta sección. Este JSON representa datos típicos en un contexto de facturación electrónica (no asociada a ningún país específico):
 ```json
{
  "cliente": {
    "nombre": "Juan Pérez",
    "es_vip": false
  },
  "total": 150000,
  "items": [
    {"nombre": "Producto A", "precio": 50000},
    {"nombre": "Producto B", "precio": 100000}
  ],
  "factura": {
    "detalles": [
      {"producto": "Producto A", "cantidad": 1},
      {"producto": "Producto B", "cantidad": 2}
    ]
  },
  "productos": [
    {"id": "A100", "nombre": "Producto A", "precio": 25000},
    {"id": "B200", "nombre": "Producto B", "precio": 50000}
  ],
  "ventas": [
    {"producto": "Producto 1", "cantidad": 3},
    {"producto": "Producto 3", "cantidad": 6},
    {"producto": "Producto 5", "cantidad": 10}
  ],
  "historial_compras": [
    {"codigo": "C101", "detalle": {"fecha": "2023-01-15"}},
    {"codigo": "C102", "detalle": {"fecha": "2023-03-15"}},
    {"codigo": "C103", "detalle": {"fecha": "2023-05-20"}}
  ],
  "numeros_de_serie": ["NS100", "NS101", "NS102"]
}
```

## Ejemplos

**1. Acceso Directo a una Clave en Primer Nivel**
* **Selector JSONPath:** $.total
* **Descripción:** Extrae el valor total de la factura.
* **Resultado:** 150000

**2. Acceso a un Elemento Anidado**
* **Selector JSONPath:** $.cliente.nombre
* **Descripción:** Obtiene el nombre del cliente de la factura.
* **Resultado:** "Juan Pérez"

**3. Acceso a un Elemento de un Arreglo por Índice**
* **Selector JSONPath:** $.items[0].precio
* **Descripción:** Recupera el precio del primer artículo en la factura.
* **Resultado:** 50000

**4. Acceso a un Elemento Anidado Dentro de un Arreglo**
* **Selector JSONPath:** $.factura.detalles[1].cantidad
* **Descripción:** Accede a la cantidad del segundo artículo en el detalle de la factura.
* **Resultado:** 2

**5. Filtrar Elementos de un Arreglo (por valor existente)**
* **Selector JSONPath:** $.productos[?(@.id == 'A100')].precio
* **Descripción:** Busca y obtiene el precio de un producto específico, identificado por su ID.
* **Resultado:** 25000

**6. Filtrar Elementos de un Arreglo (resultado vacío)**
* **Selector JSONPath:** $.productos[?(@.id == 'A999')]
* **Descripción:** Intenta encontrar un producto con un ID que no existe en la lista, esperando un resultado vacío.
* **Resultado:** None

**7. Acceso a Todos los Elementos de un Arreglo**
* **Selector JSONPath:** $.numeros_de_serie[*]
* **Descripción:** Obtiene todos los números de serie de los productos.
* **Resultado:** ["NS100", "NS101", "NS102"]

**8. Obtener Elementos Basados en una Condición Compleja**
* **Selector JSONPath:** $.ventas[?(@.cantidad > 5)].producto
* **Descripción:** Selecciona los nombres de los productos que se vendieron en cantidades mayores a cinco.
* **Resultado:** ["Producto 3", "Producto 5"]

**9. Obtener un Elemento Anidado en un Diccionario dentro de un Arreglo**
* **Selector JSONPath:** $.historial_compras[?(@.codigo == 'C102')].detalle.fecha
* **Descripción:** Encuentra la fecha de una compra específica en el historial de compras, usando su código.
* **Resultado:** "2023-03-15"

**10. Acceso Directo a un Elemento Booleano**
* **Selector JSONPath:** $.cliente.es_vip
* **Descripción:** Verifica si el cliente es marcado como VIP.
* **Resultado:** false

Estos ejemplos demuestran la versatilidad y potencia de JSONPath para acceder y manipular datos en un JSON, especialmente útil en escenarios de facturación electrónica, permitiendo desde el acceso a datos simples hasta la extracción basada en condiciones complejas.


---
Última actualización el 08/10/2026

