---
title: "Introducción"
description: ""
type: "academy"
category: "module"
tags: []
authors: [Anonymous]
date: "2026-10-08"
last_update: "2026-10-08"
time_minutes: 8
draft: false
unlisted: false
url: "https://www.billmysales.com/academy/leer-datos-de-json-con-selectores/introduccion"
---

# Introducción




---

## ¿Qué es un JSON?

¿Qué es un JSON?

# ¿Qué es un JSON?

JSON, que significa JavaScript Object Notation, es un formato de archivo de texto utilizado para almacenar y transportar datos. Su popularidad se debe a su simplicidad, legibilidad y capacidad para representar estructuras de datos complejas de manera eficiente. Es ampliamente usado en la comunicación entre servidores y aplicaciones web, así como en numerosos otros contextos, incluyendo la facturación electrónica.

## Características del Formato JSON


* **Texto Plano:** JSON es un formato de texto, lo que lo hace legible por humanos y fácilmente intercambiable entre sistemas y plataformas.
* **Estandarizado:** Sigue una sintaxis específica y reglas para representar datos, lo que asegura su consistencia y fiabilidad en diferentes aplicaciones y sistemas.

## Estructuras de Datos en JSON
JSON soporta varias estructuras de datos, incluyendo:

### Objetos

Son colecciones de pares clave-valor. Las claves son siempre strings, mientras que los valores pueden ser cualquier otro tipo de datos JSON. Un objeto se representa con llaves &quot;{}&quot;.

```json
{
  &quot;transaccion&quot;: {
    &quot;id&quot;: &quot;TX123&quot;,
    &quot;monto&quot;: 1000,
    &quot;moneda&quot;: &quot;USD&quot;
  }
}
```

### Arreglos

Son listas ordenadas de valores y se representan con corchetes &quot;[]&quot;. Los valores dentro de un arreglo (o array) pueden ser de cualquier tipo de datos JSON, incluyendo otros arreglos u objetos.

```json
{
  &quot;productos&quot;: [
    {&quot;nombre&quot;: &quot;Laptop&quot;, &quot;precio&quot;: 800},
    {&quot;nombre&quot;: &quot;Teclado&quot;, &quot;precio&quot;: 100}
  ]
}
```

### Valores Primitivos

Estos incluyen tipos como cadenas literales de texto (strings), números, booleanos (true o false) y null.

```json
{
  &quot;nombre&quot;: &quot;Empresa X&quot;,
  &quot;activo&quot;: true,
  &quot;balance&quot;: null
}
```


&gt; [!INFO] Importante
&gt;
&gt; BillMySales está diseñado para trabajar con todas estas estructuras. Sin embargo, para estructuras muy anidadas o complejas, es posible que se requiera un mayor detalle en la especificación de las configuraciones para acceder correctamente a los datos deseados. Te recomendamos usar la herramienta de pruebas que se encuentra en tu cuenta, específicamente dentro de una orden que tengas en BillMySales.

## Ejemplo en Facturación Electrónica

En un contexto de facturación electrónica genérica (no asociada a ningún país en concreto), un JSON podría utilizarse para representar una factura con todos sus detalles. Un ejemplo sería:

```json
{
  &quot;factura&quot;: {
    &quot;numero&quot;: &quot;F123456&quot;,
    &quot;fecha&quot;: &quot;2023-01-01&quot;,
    &quot;cliente&quot;: {
      &quot;nombre&quot;: &quot;Cliente ABC&quot;,
      &quot;identificacion&quot;: &quot;ID12345&quot;
    },
    &quot;items&quot;: [
      {
        &quot;producto&quot;: &quot;Producto 1&quot;,
        &quot;cantidad&quot;: 2,
        &quot;precio_unitario&quot;: 150
      },
      {
        &quot;producto&quot;: &quot;Producto 2&quot;,
        &quot;cantidad&quot;: 1,
        &quot;precio_unitario&quot;: 200
      }
    ],
    &quot;total&quot;: 500
  }
}
```
Este JSON representa una factura con información sobre el cliente, los productos vendidos y el total de la transacción. La estructura clara y jerárquica de JSON facilita la organización y acceso a la información, lo cual es esencial en procesos como la facturación electrónica.

En resumen, JSON es un formato poderoso y versátil para el intercambio de datos, y su capacidad para representar estructuras de datos complejas lo hace ideal para una variedad de aplicaciones, incluyendo la facturación electrónica.


    
---

## ¿Cómo leer un JSON?

¿Cómo leer un JSON?

# ¿Cómo leer un JSON?

Es común que un usuario desee personalizar desde dónde obtener ciertos datos en sus órdenes procesadas por BillMySales. Por ejemplo, un usuario puede tener el RUT (VAT number) de un cliente en cierto campo, pero otro usuario podría tenerlo en otro campo (por configuraciones o personalizaciones de su checkout).

En BillMySales creemos en la personalización y configuración extrema de tu pasarela. Que puedas decidir exactamente qué dato quieres extraer de la orden de tu tienda y que puedas decidir dónde colocarla en tu facturador. Para lograr esto, cada usuario puede definir diferentes campos que son configurables en su cuenta, donde estas configuraciones permiten extraer datos de un JSON (el de la tienda) y pasarlos a otro JSON (el del facturador).

## Selector

Para resolver esta situación, y que puedas configurar tus pasarelas para extraer los datos de los JSON, BillMySales utiliza una herramienta que llamamos selector (o selectores). Este selector es simplemente una forma de escribir &quot;cómo&quot; obtener cierto dato desde un JSON. Permitiendo que los campos sean configurables (personalizables) por cada usuario según sus necesidades.


![Leer datos JSON](https://www.billmysales.com/img/content/academy/leer-datos-de-json/leer-datos-json-1.jpg)

Específicamente, un selector es una cadena de texto que describe cómo localizar un valor específico dentro de una estructura de datos JSON. BillMySales ofrece una variedad de tipos de selectores, incluyendo selectores simples, selectores anidados, selectores con operadores lógicos y selectores con condiciones de IF ternarios.

En BillMySales, un selector es una herramienta poderosa que permite a los usuarios especificar cómo y de dónde obtener datos específicos de un JSON para su uso en procesos de facturación electrónica. Un selector puede ser simple, extrayendo datos de un nivel específico del JSON, o avanzado, permitiendo la extracción de datos anidados, la selección basada en condiciones, y más.

Esta guía proporciona instrucciones detalladas sobre cómo utilizar los selectores en el módulo BillMySales para leer datos de estructuras JSON. Los selectores permiten acceder a datos específicos dentro de un JSON de manera flexible y potente.

&gt; [!INFO] Importante
&gt;
&gt;Actualmente no es posible leer y asignar cualquier campo en los documentos. Puedes leer cualquiera, pero la asignación requiere programación con las aplicaciones actuales de BillMySales. Si requieres una mejora respecto a esto, y que se pueda personalizar un campo que hoy no es personalizable, contáctanos y revisaremos la factibilidad de agregar un selector para dicho campo.

## ¿Qué se puede hacer con el selector?

El selector es un patrón de elementos y otros términos que permite seleccionar un valor dentro de un diccionario (dentro del JSON). Su principal funcionalidad es permitir capturar uno o más valores que puede tener un índice dentro del JSON.

En general:

* Permite seleccionar nodos anidados dentro de un JSON.
* Permite seleccionar elementos de un arreglo dentro de un JSON.
* Permite seleccionar elementos de un arreglo de diccionarios donde el elemento a obtener depende del valor de otro índice en el mismo diccionario.
* Permite obtener un subconjunto de los datos (objeto). Esto es útil al usar pruebas de selectores que se deben buscar solo dentro de un índice en particular del JSON.
* Se permite concatenar selectores. Tanto con otros selectores como con cadenas de texto.
* Se permite elegir el primer elemento con valor dentro de un listado de selectores. Esto además permite añadir un valor por defecto al campo si no existe.

Es posible combinar los selectores de diferentes maneras para conseguir seleccionar los datos del JSON.


    
---

## Probar un selector

Probar un selector

# Probar un selector

Escribir un selector puede parecer complicado, y a veces es fácil cometer errores. Por lo que te recomendamos que pruebes tu selector con alguna orden de tu cuenta de BillMySales. O sea, pruébalo con datos reales. Solo cuando lo tengas probado lo usas en la configuración de tu pasarela de facturación. Así no tendrás problemas en tu configuración.

&gt; [!INFO] Importante
&gt;
&gt;Es crucial probar los selectores con datos reales de tus órdenes en la interfaz de BillMySales. Así podrás ingresar tu selector y ver el resultado en tiempo real con los datos de una orden específica.

Para probar solo debes dirigirte a una orden y en la esquina superior derecha buscar en el menú la opción &quot;Probar selector&quot;:

![Menú - probar selector](https://www.billmysales.com/img/content/academy/leer-datos-de-json/probar-selector.png)

Al hacer clic tendrás una ventana con las opciones para ingresar el selector y probar si trae los datos que necesitas. Luego podrás usar ese selector en la configuración de tu pasarela para personalizar tu cuenta.

![Probar selector](https://www.billmysales.com/img/content/academy/leer-datos-de-json/probar-selector-2.png)

&gt; [!NOTE] Nota
&gt;
&gt;No te preocupes de la opción &quot;Selector de nodo raíz para la búsqueda&quot;, es opcional y normalmente no la usarás, ya que es para casos muy específicos cuando se hacen desarrollos o integraciones. Así que ese campo déjalo en blanco.

Los campos del formulario son:

* **Fuente de datos:** son los posibles JSON con datos que podemos usar. Las opciones acá son:
    * Datos recibidos del origen de datos (datasource_data).
    * Datos normalizados a partir de los datos recibidos (datasource_invoice).
    * Datos preparados que se van a mandar al facturador (biller_data).
    * Datos de respuesta del facturador (biller_invoice).
* **Selector de nodo raíz para la búsqueda:** permite elegir un subconjunto de los datos de la fuente de datos (normalmente no usado).
* **Selector de datos buscados:** este es el selector real que se desea usar luego en una configuración.

En el resultado podremos ver, dependiendo del selector usado, lo siguiente:

* Los datos **escalares** obtenidos: texto (string), un número o un valor booleano.
* Un valor **null** cuando el selector no encuentra datos.
* Un **JSON** con el objeto obtenido, cuando no es un texto (string), un número o un valor booleano.


    

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

