Corriger les guillemets simples en JSON

Les chaînes et clés d’objet en JSON doivent utiliser des guillemets doubles. Les valeurs entre guillemets simples sont fréquentes dans les extraits JavaScript, les sorties façon Python et les réponses de LLM.

Pourquoi les guillemets simples échouent

Le JSON strict n’accepte que les chaînes entre guillemets doubles. Un parser refusera {'name':'Ada'} même si la forme paraît familière aux développeurs JavaScript.

Exemple cassé

{ 'name': 'Ada', 'active': true }

JSON corrigé

{ "name": "Ada", "active": true }

D’où vient le texte entre guillemets simples

repr() et l’impression des dictionnaires en Python, les littéraux d’objet JavaScript copiés depuis la console, l’inspection de hashes en Ruby et beaucoup de réponses de LLM utilisent des guillemets simples. Aucune de ces sources n’est du JSON — ce sont des littéraux natifs du langage qui se contentent d’y ressembler.

Pourquoi un find-and-replace aveugle est risqué

Remplacer ' par " sans précaution casse les valeurs contenant une apostrophe, comme { 'note': 'it\'s fine' }. Après le remplacement, l’apostrophe interne entre en collision avec le nouveau délimiteur de chaîne. Un convertisseur sûr doit suivre le contexte des guillemets et ne remplacer que les délimiteurs, pas les caractères internes.

Stratégie de conversion sûre

Tokenisez d’abord l’entrée : parcourez le texte, identifiez les bornes de chaînes par leur guillemet ouvrant, et reconstruisez chaque token avec des guillemets doubles — en échappant les guillemets doubles internes et en désechappant les guillemets simples devenus inutiles. L’outil de réparation de ce site fait cela en une passe.

Erreurs de syntaxe JSON associées

Le JSON entre guillemets simples vient souvent accompagné d’autres péchés à la JavaScript : clés sans guillemets, virgules finales, commentaires de ligne ou valeurs undefined. Après avoir réparé les guillemets, validez le résultat pour faire ressortir ce qui reste.

FAQ

Q : Les chaînes entre guillemets simples sont-elles valides en JSON5 ? R : Oui, JSON5 les autorise. Q : json.loads de Python accepte-t-il les guillemets simples ? R : Non — utilisez ast.literal_eval si la source est vraiment un littéral Python, sinon convertissez d’abord les guillemets. Q : Les clés JSON doivent-elles aussi être entre guillemets doubles ? R : Oui — les clés sont des chaînes, même règle.