JSON Toolkit

JSONPath ou JSON Pointer

L’essentiel : JSON Pointer est une adresse unique que vous pouvez stocker comme clé ; JSONPath est un langage de requête. Utiliser le mauvais casse les mises à jour de configuration ou réinvente un JSONPath bancal.

Intermédiaire~4 min de lecturePublié le 2026-10-30Mis à jour le 2026-10-30
Où finit JSONPath et où commence JSON Pointer

L'essentiel : utilisez JSON Pointer quand il faut lire, écrire ou stocker l'adresse d'un nœud unique (par exemple /server/cors/0), et JSONPath quand il faut sélectionner un ensemble de nœuds par condition ; tout chemin persisté devrait être un Pointer, jamais une expression.

Demandez-vous si vous avez besoin d'un nœud ou d'un ensemble.

En un tableau

JSON Pointer JSONPath
Nature Adresse unique Expression de requête
Syntaxe /a/b/0 $.a.b[0], $..price
Résultat Exactement un nœud, ou aucun Zéro ou plusieurs nœuds
Stockable comme clé Oui, la chaîne est l'identité Non, peut correspondre à plusieurs
Norme RFC 6901 RFC 9535 (finalisée en 2024)

JSON Pointer

/server/host        -> "127.0.0.1"
/server/cors/0      -> "https://a.com"
/                   -> the whole document

Les clés contenant / ou ~ sont échappées : ~0 pour ~, ~1 pour /. La valeur est le déterminisme : l'adresse est une chaîne, donc elle tient dans une colonne de base de données, une ligne de journal ou une clé de configuration. JSON Patch (RFC 6902) adresse chaque opération de cette façon.

JSONPath

$.store.book[*].author
$..price
$.store.book[?(@.price < 10)]

Plus proche du WHERE de SQL. La même expression renvoie zéro, un ou cent nœuds selon les données.

Deux modes d'échec

Utiliser JSONPath comme clé de configuration. Stockez $.server.port et un jour la structure devient un tableau ; l'expression correspond maintenant à plusieurs ports et la logique de mise à jour n'a aucun moyen de choisir.

Utiliser Pointer pour la sélection. « Trouver chaque nœud dont le prix est inférieur à 10 » est impossible avec un pointeur. Écrire la boucle soi-même signifie construire un JSONPath partiel.

Comment les vrais systèmes répartissent le travail

  • Lectures de configuration, mises à jour de champs, patchs : Pointer, fixe et auditable
  • Exploration de données, extraction en masse, reporting : JSONPath, expressivité d'abord
  • Tout ce qui est persisté : Pointer seulement, jamais une expression

FAQ

Comment choisir entre JSON Pointer et JSONPath ?

Demandez-vous si vous avez besoin d'un nœud ou d'un ensemble. Utilisez JSON Pointer pour lire ou écrire un nœud précis et stocker cette adresse comme clé, car le pointeur est unique, par exemple /server/cors/0. Utilisez JSONPath pour sélectionner des nœuds par condition, par exemple $.store.book[?(@.price < 10)].

Pourquoi une expression JSONPath ne peut-elle pas servir de clé de configuration ?

Parce que l'expression peut correspondre à plusieurs nœuds. Stockez $.server.port et un jour la structure devient un tableau ; l'expression correspond alors à plusieurs ports et la logique de mise à jour ne peut pas décider lequel changer. Tout ce qui est persisté ou audité a besoin d'un Pointer.

JSON Pointer peut-il filtrer des nœuds par condition ?

Non. Un pointeur ne parcourt qu'un chemin fixe et n'a aucun moyen de savoir quels nœuds existent, donc sélectionner chaque nœud dont le prix est inférieur à 10 est impossible. Écrire cette boucle soi-même signifie construire un JSONPath partiel.

Lectures complémentaires