AZ Tools

Resolutor de JSON Pointer (RFC 6901)

Desarrollo

Un JSON Pointer es la forma estándar (RFC 6901) de direccionar un único valor dentro de un documento JSON con una ruta separada por barras como /user/roles/0. Es lo que usan por dentro $ref de JSON Schema, JSON Patch, JSON Merge Patch y muchas herramientas OpenAPI. Pega un documento y un puntero para ver exactamente qué valor selecciona, con formato. El resolutor implementa la especificación con precisión: el puntero vacío devuelve todo el documento, ~1 significa una barra literal y ~0 una tilde literal (así una clave como "a/b" se alcanza con /a~1b), los índices de array deben ser 0 o enteros sin signo sin ceros a la izquierda, y el token especial "-" no tiene valor en lectura. Se aceptan punteros de fragmento URI (#/user/roles/0) y se decodifican por porcentaje. También lista cada puntero de tu documento con una vista previa del valor, para que hagas clic y descubras la ruta exacta a cualquier nodo. Todo corre localmente; no se sube nada.

Valor resuelto

"admin"

Punteros en este documento (clic para usar)

(raíz){…} (3)
/user{…} (3)
/user/id42
/user/name"Ada"
/user/roles[…] (2)
/user/roles/0"admin"
/user/roles/1"editor"
/a~1b"slash in key"
/settings{…} (2)
/settings/theme"dark"
/settings/limits{…} (1)
/settings/limits/max100

Puntero vacío = documento completo. Escapa / en una clave como ~1 y ~ como ~0. Se aceptan fragmentos URI como #/a/b.

Cómo usar

  1. Pega o edita el documento JSON.
  2. Escribe un JSON Pointer (p. ej. /user/name, o #/settings/limits/max), o haz clic en una fila de la lista de punteros.
  3. Lee el valor resuelto; escapa una barra en una clave como ~1 y una tilde como ~0.

Preguntas frecuentes

¿En qué se diferencia un JSON Pointer de JSONPath?
JSON Pointer (RFC 6901) direcciona exactamente un valor con una ruta simple separada por barras y lo usan JSON Schema, JSON Patch y OpenAPI. JSONPath es un lenguaje de consulta que puede coincidir con muchos valores mediante comodines, filtros y descenso recursivo. Usa esta herramienta para lo primero; el tester de JSONPath para lo segundo.
¿Qué son ~0 y ~1?
Como / separa tokens y ~ es el carácter de escape, una / literal dentro de una clave se escribe ~1 y una ~ literal se escribe ~0. Así el miembro "a/b" se alcanza con /a~1b, y "m~n" con /m~0n. Al desescapar, ~1 se reemplaza antes que ~0, exactamente como exige el RFC.
¿Qué devuelve el puntero vacío?
Una cadena vacía es un puntero válido que refiere a todo el documento, así que devuelve el valor JSON completo. Ten en cuenta que "/" no está vacío — es un puntero con un token de cadena vacía, que selecciona el miembro cuya clave es la cadena vacía.
¿Por qué no se resolvió mi puntero?
Razones comunes: el miembro o índice de array no existe, un índice de array tiene un cero a la izquierda (solo 0, 1, 2… sin relleno son válidos), usaste "-" (que no tiene valor al leer), o un puntero no vacío no empezó por /. El mensaje de error nombra el token exacto que falló.

Herramientas relacionadas