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):

{
  "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.

Commenting is not enabled on this course.