Vai al contenuto principale
CuteJSON
↑↓ Naviga Enter Seleziona Esc Chiudi

Come convertire JSON in YAML senza il classico bug 01234

Pubblicato 2 min di lettura Di Akash Kinkar Pandey

YAML e un linguaggio molto piu grande di JSON. Ogni documento JSON e YAML valido, ma il contrario non e vero, il che significa che un convertitore JSON a YAML puo essere completamente corretto mentre un convertitore YAML a JSON deve rifiutare le parti di YAML che JSON non ha modo di esprimere.

Utilizzo del convertitore JSON a YAML

Scegli una direzione e una larghezza di indentazione, poi premi Converti. Scrivendo YAML, un mapping diventa una chiave per riga, un array ripete il trattino per elemento, e un null diventa una chiave senza valore alcuno.

Il bug contro il quale questo strumento protegge specificamente

Uno scalare YAML semplice che sembra un numero, un booleano, o un indicatore YAML viene male letto come quel tipo nel momento in cui qualcosa analizza il file all indietro. Un CAP di 01234 e il caso classico: scritto senza virgolette, un analizzatore YAML lo legge come il numero 1234 e lo zero iniziale e perso per sempre. Lo stesso problema colpisce una stringa che per caso si legge come "true" o "null".

Convertendo

{"zip":"01234","active":"true","note":null,"id":12345678901234567890}

produce:

zip: '01234'
active: 'true'
note: null
id: 12345678901234567890

Entrambi i valori stringa sono specificamente tra virgolette perche lasciarli senza virgolette cambierebbe il loro tipo al ritorno. Il null reale e scritto senza virgolette, perche quella e l ortografia corretta senza virgolette. Il id di venti cifre sopravvive intatto, perche passa attraverso il flusso di token invece che un valore analizzato da JSON.parse.

Cosa accetta il lettore e cosa rifiuta

Rileggendo YAML in JSON, lo strumento capisce un mapping, una sequenza, una stringa tra virgolette, uno scalare a blocco, una collezione a flusso, e uno scalare piatto piegato. Rifiuta ancore, alias e tag per nome invece di ignorarli silenziosamente, perche YAML non ha un equivalente per dare un alias a un valore dentro JSON e fingere il contrario produrrebbe un documento che sembra solo corretto.

Viaggio di andata e ritorno

Convertire l esempio sopra da YAML restituisce il documento originale esatto: "01234" e "true" come stringhe, null come null, e l intero completo di venti cifre. Quel viaggio di andata e ritorno e il vero test di se le regole di virgolette di un convertitore sono corrette, perche una regola sbagliata di solito si mostra solo quando riconverti e confronti.

Torna a tutti i post