100 % local — vos données ne quittent jamais votre navigateur

Chaîne JSON en texte — lisez la valeur à l’intérieur

Décodez un littéral de chaîne JSON en texte. Les guillemets autour sont optionnels, et un refus nomme ce qui cloche et où, donc vous pouvez le corriger.

Instantané Privé Zéro cookie

Entrée JSON String

Sortie Text

Ce que fait cet outil

Un littéral de chaîne JSON devient le texte qu’il représente. "caf\u00e9" donne café, "deux\nlignes" donne deux lignes, et "\ud83d\ude00" donne l’emoji — une paire de substitution fait un caractère, pas deux moitiés cassées.

Les guillemets sont optionnels

Les deux formes fonctionnent :

"caf\u00e9"
caf\u00e9

C’est délibéré. Une chaîne JSON arrive rarement avec ses guillemets intacts : on la copie d’une ligne de journal, d’un git diff, d’une trace d’appels, d’un message d’erreur qui n’a cité que l’intérieur. Exiger les guillemets reviendrait à les remettre à la main chaque fois.

Le prix à payer est modeste, et il se dit clairement : une entrée nue qui se trouve être du JSON valide d’une autre nature — [1,2], null — est lue comme du texte, parce que c’est ce que signifie un fragment nu ici. Seule une entrée entre guillemets est analysée comme un littéral.

Un refus dit quoi et où

Une entrée qui n’est pas une chaîne JSON est refusée plutôt que décodée à moitié, et le message nomme la cause :

EntréeMessage
a"bUnescaped quotation mark at position 1: write it as \"
"ab\q"Unknown escape "\q" at position 3
"a\u12"Invalid \u escape at position 2: four hexadecimal digits expected
"abcThe opening quotation mark has no closing quotation mark
{"a":1}Expected a JSON string, found a JSON object

Les positions comptent à partir de zéro et désignent le texte que vous avez collé : le nombre vous mène au caractère.

Cela mérite d’être dit parce qu’il en allait autrement : chacun de ces cas produisait l’unique message Invalid JSON string escape sequence. Un objet collé n’est pas une faute d’échappement, et s’entendre dire le contraire envoie chercher au mauvais endroit. C’était un vrai défaut de cet outil, trouvé en écrivant cette page et corrigé.

Rien n’est deviné

Un échappement inconnu est une erreur, pas un caractère. \q n’est pas du JSON valide, et décider qu’il « voulait sans doute dire q » vous rendrait un texte subtilement différent de ce que la source contenait — le genre d’écart qui ressort trois systèmes plus loin.

Confidentiel par conception

Tout s’exécute localement dans votre navigateur en JavaScript. Vos données ne sont jamais envoyées sur un serveur, ce qui rend l’outil sûr pour des contenus sensibles, et il fonctionne hors ligne.

Questions fréquentes

Dois-je inclure les guillemets englobants ?
Non. Un littéral entre guillemets et un fragment nu comme `caf\u00e9` sont tous deux acceptés, parce qu’on n’a souvent que l’intérieur d’une chaîne — copié d’une ligne de journal, d’un diff, d’une trace d’appels. Si les guillemets sont là, ils servent ; sinon, ils sont ajoutés.
Pourquoi mon objet JSON est-il refusé ?
Parce que cet outil décode une chaîne, pas un document. Coller `{"a":1}` donne `Expected a JSON string, found a JSON object` plutôt qu’une plainte confuse sur les échappements. Pour lire un document entier, passez par le formateur ou le validateur JSON.
Il dit « Unescaped quotation mark at position 4 ». Qu’est-ce que cela veut dire ?
Que le caractère 4 de ce que vous avez collé est un `"` qui referme la chaîne trop tôt. Dans une chaîne JSON, un guillemet s’écrit `\"`. Les positions comptent à partir de zéro et désignent le texte que vous avez tapé : vous allez droit au caractère au lieu de le chercher.

Convertisseurs associés