Évaluateur de JSON Pointer (RFC 6901) | Valeur résolue et raison exacte de l'échec
Évalue un JSON Pointer (RFC 6901) sur n'importe quel document JSON et observe sa résolution jeton par jeton. Décode les échappements ~0 et ~1, vérifie les indices de tableau et indique la raison précise lorsqu'un pointeur échoue.
💡 À propos de cet outil
Un JSON Pointer est une chaîne comme /users/0/name qui désigne un emplacement unique dans un document JSON. On en rencontre partout dès qu'on travaille avec des API : opérations JSON Patch (RFC 6902), $ref dans JSON Schema et OpenAPI, pointeurs d'erreur des réponses JSON:API. La syntaxe paraît simple jusqu'à ce qu'une clé contienne une barre oblique ou un tilde : a/b doit alors s'écrire /meta/a~1b et c~d devient /meta/c~0d, et il est étonnamment facile de se tromper en développant l'échappement de tête.
Cet outil découpe le pointeur sur /, déséchappe chaque jeton (~1 → /, puis ~0 → ~) et parcourt le document étape par étape. Le chemin de résolution montre jusqu'où le parcours est allé : en cas d'échec, vous voyez s'il s'agissait d'un membre absent, d'un indice hors limites ou d'un jeton tentant de descendre dans une valeur scalaire. Le pointeur vide renvoie la racine entière du document, conformément à la spécification.
🧐 Questions fréquentes
Q. Quelle est la différence entre ~0 et ~1 ?
A. ~1 représente une barre oblique / et ~0 un tilde ~. L'ordre est fixé par la spécification : on remplace d'abord ~1, puis ~0. Faire l'inverse altérerait des séquences comme ~01, c'est pourquoi cet outil applique toujours ~1 avant ~0.
Q. Comment référencer un élément de tableau ?
A. Avec un entier base zéro, par exemple /users/0. Les zéros initiaux comme 00 ou 01 sont invalides. Un indice hors des bornes du tableau (égal ou supérieur à sa taille) renvoie « Introuvable », et le chemin met en évidence le jeton où le parcours s'est arrêté.
Q. Pourquoi un - final échoue-t-il ?
A. - est le jeton réservé pour « l'emplacement après le dernier élément ». JSON Patch l'utilise pour ajouter à la fin, mais comme référence de lecture il ne pointe sur aucune valeur ; l'outil le signale donc sans valeur.
Q. Puis-je viser un membre dont la clé est la chaîne vide ?
A. Oui. Pour {"": 1}, la valeur se référence par / (une seule barre oblique). C'est différent du pointeur vide (rien du tout), qui désigne toute la racine.
Q. Mes données quittent-elles le navigateur ? A. Non : l'analyse et le parcours s'exécutent entièrement dans votre navigateur, vous pouvez donc coller des charges utiles internes sans qu'elles soient envoyées où que ce soit.
📚 Un échappement, un piège fréquent
L'erreur la plus répandue avec les JSON Pointer concerne les types de média comme application/json utilisés en tant que clés. Un champ nommé littéralement application/json dans un objet de configuration doit s'écrire /headers/application~1json ; le /headers/application/json « évident » descend de trois niveaux et échoue. Coller les deux côte à côte dans un évaluateur rend le bogue visible immédiatement.
Cette rigueur explique aussi pourquoi le #/components/schemas/User d'OpenAPI a cette forme : tout ce qui suit le # est un JSON Pointer interprété comme fragment d'URI. La même grammaire sert à pointer dans un document local, un fichier distant ou une réponse HTTP. Ce choix volontaire évite à chaque outil de l'écosystème REST de réinventer sa propre syntaxe de chemin, au profit d'une notation unique et vérifiable jeton par jeton.