Correggere gli apici singoli nel JSON

Stringhe e chiavi di oggetto in JSON devono usare virgolette doppie. I valori tra apici singoli sono comuni in frammenti JavaScript, output in stile Python e risposte di LLM.

Perché gli apici singoli falliscono

JSON strict accetta solo stringhe con virgolette doppie. Un parser rifiuta {'name':'Ada'} anche se la forma può sembrare familiare a chi sviluppa in JavaScript.

Esempio errato

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

JSON corretto

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

Da dove arriva il testo con apici singoli

repr() e la stampa dei dict in Python, letterali di oggetto JavaScript copiati dalla console, ispezione di hash in Ruby e molte risposte di LLM usano apici singoli. Nessuno di questi è JSON — sono letterali nativi del linguaggio che si limitano ad assomigliargli.

Perché un find-and-replace cieco è rischioso

Sostituire ' con " senza criterio rompe i valori che contengono apostrofi, come { 'note': 'it\'s fine' }. Dopo la sostituzione l’apostrofo interno collide con il nuovo delimitatore di stringa. Un convertitore sicuro deve tenere conto del contesto delle virgolette e cambiare solo i delimitatori, non i caratteri interni.

Strategia di conversione sicura

Tokenizza prima l’input: scorri il testo, identifica i confini delle stringhe dall’apice di apertura e ricostruisci ogni token con virgolette doppie — facendo l’escape delle virgolette doppie interne e togliendo l’escape ridondante agli apici singoli. Lo strumento di repair di questo sito fa tutto in una passata.

Errori di sintassi JSON correlati

Il JSON con apici singoli porta spesso con sé altri «peccati» in stile JavaScript: chiavi senza virgolette, virgole finali, commenti di riga o valori undefined. Dopo aver sistemato gli apici, valida il risultato per far emergere ciò che resta.

FAQ

D: Le stringhe tra apici singoli sono valide in JSON5? R: Sì, JSON5 le ammette. D: json.loads di Python accetta gli apici singoli? R: No — usa ast.literal_eval se la sorgente è davvero un letterale Python, altrimenti converti prima gli apici. D: Anche le chiavi JSON devono usare le virgolette doppie? R: Sì — le chiavi sono stringhe, stessa regola.