Aller au contenu
Tout en local

Applicateur de JSON Patch

Appliquer un RFC 6902 JSON Patch (ou RFC 7396 merge patch) à un document JSON.

Entrée
Patch (JSON)
Sortie

Applicateur de JSON Patch

Collez un document JSON et un patch, et cet outil applique le patch et retourne le document résultant. Il gère RFC 6902 JSON Patch — le tableau d'opérations add, remove, replace, move, copy et test — et RFC 7396 JSON Merge Patch, le format « décrivez la forme voulue » des requêtes PATCH.

Avant que quoi que ce soit ne s'exécute, le patch est vérifié pour détecter les problèmes structurels : un nom d'opération inconnu, un « path » manquant ou mal formé, une « value » absente sur add/replace/test ou un « from » absent sur move/copy sont signalés d'avance avec l'index exact de l'opération, plutôt qu'un échec à mi-chemin. Une fois qu'un patch passe cette vérification, l'option d'erreur décide ce qui se passe si une opération individuelle échoue toujours au moment de l'application (un chemin qui n'existe plus, un test qui ne correspond pas) : s'arrêter à la première erreur et garder ce qui a déjà été appliqué, ou l'ignorer et continuer. Activez la trace étape par étape pour voir le document après chaque opération — inestimable quand un patch à neuf étapes fait quelque chose d'inattendu à l'étape six. L'exécution à blanc calcule le tout sans modifier la sortie, vous pouvez donc vérifier qu'un patch est sûr avant d'y faire confiance.

Les chemins JSON Pointer suivent RFC 6901 exactement, y compris le jeton d'ajout de tableau « - » et les échappements ~0 / ~1 pour « ~ » et « / » dans une clé. Move et copy lisent la source avec « from » et écrivent avec « path » ; test compare structurellement, en ignorant l'ordre des clés d'objet. La sortie peut être indentée pour la lisibilité ou compactée pour être collée dans un appel API, et le total indique le nombre d'opérations appliquées, échouées ou ignorées.

Tout s'exécute localement dans votre navigateur — le document et le patch ne sont jamais téléchargés nulle part, c'est donc sûr à utiliser avec des charges utiles API réelles ou des fichiers de configuration. Copiez le résultat, téléchargez-le en tant que fichier .txt, ou renvoyez-le directement dans l'entrée pour appliquer un autre patch par-dessus.

FAQ

Quelle est la différence entre JSON Patch et JSON Merge Patch ?
JSON Patch (RFC 6902) est une liste explicite d'opérations — ajouter ceci, supprimer cela, déplacer ceci ici — pour qu'il puisse exprimer des modifications précises comme réorganiser un array. JSON Merge Patch (RFC 7396) est simplement un objet JSON partiel décrivant la nouvelle forme ; une clé définie sur null la supprime, tout le reste la remplace. Merge patch est plus simple à écrire à la main mais ne peut pas exprimer les modifications de array ni distinguer sans ambiguïté entre « supprimer cette clé » et « la définir sur null ».
Que se passe-t-il si une opération échoue à mi-chemin?
Avec « s'arrêter à la première erreur », les opérations déjà appliquées restent appliquées et le reste est ignoré — le total et la trace montrent exactement où c'est arrêté. Avec « ignorer et continuer », chaque opération est tentée et seules les opérations qui échouent sont laissées de côté du résultat.
Que fait réellement l'exécution à blanc ?
L'exécution à blanc valide le patch et simule chaque opération, ainsi le total et la trace montrent exactement ce qui se passerait, mais la boîte de sortie affiche toujours votre document d'origine intact. Rien n'est « écrit » nulle part dans un outil de navigateur — c'est un moyen d'apercevoir l'effet d'un patch avant d'y faire confiance.
Valide-t-il le patch avant de l'appliquer?
Oui. Un nom d'opération inconnu, un chemin qui n'est pas un JSON Pointer valide, ou un champ « value »/« from » manquant sont tous détectés avant que l'une des opérations ne s'exécute, et l'erreur nomme l'index de l'opération pour que vous puissiez la trouver dans un patch long.
Mon JSON est-il téléchargé quelque part?
Non. Le document et le patch sont tous deux traités entièrement dans votre navigateur et ne quittent jamais votre appareil.