Qual è la differenza tra YAML e JSON?


735

Quali sono le differenze tra YAML e JSON, in particolare considerando le seguenti cose?

  • Prestazioni (tempo di codifica / decodifica)
  • Consumo di memoria
  • Chiarezza di espressione
  • Disponibilità della libreria, facilità d'uso (preferisco C)

Avevo intenzione di utilizzare uno di questi due nel nostro sistema incorporato per memorizzare i file di configurazione.

Relazionato:

Devo usare YAML o JSON per archiviare i miei dati Perl?


26
Ricorda che JSON può essere considerato un sottoinsieme di YAML: en.wikipedia.org/wiki/JSON#YAML
Charles,

2
@Charles, sì, ma hanno qualche sottile differenza: ajaxian.com/archives/json-yaml-its-getting-closer-to-truth
pierrotlefou

1
Poiché YAML è (approssimativamente) un superset di JSON, la questione della performance non può essere risolta senza ipotesi sul fatto che userete quell'espressività. Se non ne hai bisogno: quanto sono veloci i parser YAML nella lettura di JSON? Se ne hai bisogno: quanto sono più lenti i parser JSON quando permetti una rappresentazione JSON forse più lunga della stessa idea?
poolie,

@jokoon Immagino "Preferirei una libreria C" (es. libyaml)
dbr

4
I documenti YAML possono essere complessi e difficili da leggere. Un attacco da "miliardi di risate" è possibile con YAML. D'altra parte, oggetti complessi, grafici e altre strutture possono essere serializzati in modo efficiente in YAML. Per i formati di interscambio e le strutture semplici, è preferito JSON. Per la serializzazione di oggetti complessi o per le definizioni grammaticali, è possibile preferire YAML.
Erik Aronesty,

Risposte:


656

Tecnicamente YAML è un superset di JSON. Ciò significa che, almeno in teoria, un parser YAML può comprendere JSON, ma non necessariamente viceversa.

Vedi le specifiche ufficiali, nella sezione intitolata "YAML: Relation to JSON" .

In generale, ci sono alcune cose che mi piacciono di YAML che non sono disponibili in JSON.

  • Come sottolineato da @jdupont , YAML è visivamente più facile da guardare. In effetti la homepage di YAML è di per sé valida YAML, ma è facile da leggere per un essere umano.
  • YAML ha la possibilità di fare riferimento ad altri elementi all'interno di un file YAML usando "ancore". Quindi può gestire le informazioni relazionali come si potrebbe trovare in un database MySQL.
  • YAML è più efficace nell'incorporare altri formati di serializzazione come JSON o XML in un file YAML.

In pratica nessuno di questi ultimi due punti avrà probabilmente importanza per le cose che tu o io facciamo, ma a lungo termine, penso che YAML sarà un formato di serializzazione dei dati più robusto e praticabile.

Al momento, AJAX e altre tecnologie web tendono ad usare JSON. YAML è attualmente utilizzato maggiormente per i processi di dati offline. Ad esempio, è incluso per impostazione predefinita nel pacchetto di visione artificiale OpenCV basato su C, mentre JSON non lo è.

Troverai librerie C sia per JSON che per YAML. Le librerie di YAML tendono ad essere più recenti, ma in passato non ho avuto problemi con loro. Vedi ad esempio Yaml-cpp .


199
json non è un sottoinsieme (anche se è vicino) e le incompatibilità sono esasperanti quando le incontri. le librerie json sono generalmente più veloci ... ( stackoverflow.com/questions/2451732/… ). I sostenitori di yaml insisteranno sul fatto che si tratta di un sottoinsieme. se la leggibilità è un problema, utilizzare yaml. se l'interoperabilità e la velocità sono un problema, utilizzare JSON.
Erik Aronesty,

6
YAML è un superset di una particolare forma di sintassi JSON. Cioè, se si utilizza JSON in modo compatibile con YAML, allora è un sottoinsieme corretto. Come pierr ha commentato sopra, le specifiche stanno [puntando alla compatibilità] (ajaxian.com/archives/json-yaml-its-getting-closer-to-truth).
naught101

120
Inoltre YAML supporta commenti utili.
Den

59
@ErikAronesty JSON era vicino a un sottoinsieme di YAML 1.1, ma da YAML 1.2 ora è un sottoinsieme vero. YAML 1.2 è stato principalmente rilasciato per appianare le ultime incompatibilità tra le due specifiche.
00prometheus

64
Dalla specifica YAML 1.2 : "L'obiettivo principale di questa revisione è rendere YAML conforme a JSON come sottoinsieme ufficiale".
Ricco C

204

differenze:

  1. YAML, a seconda di come lo usi, può essere più leggibile di JSON
  2. JSON è spesso più veloce ed è probabilmente ancora interoperabile con più sistemi
  3. È possibile scrivere un parser JSON "abbastanza buono" molto rapidamente
  4. Le chiavi duplicate, che sono potenzialmente JSON valide, sono sicuramente YAML non valide.
  5. YAML ha un sacco di funzioni, tra cui commenti e ancore relazionali. La sintassi YAML è di conseguenza piuttosto complessa e può essere difficile da capire.
  6. È possibile scrivere strutture ricorsive in yaml:, {a: &b [*b]}che si ripeterà all'infinito in alcuni convertitori. Anche con il rilevamento circolare, è ancora possibile una "bomba yaml" (vedi bomba xml ).
  7. Poiché non ci sono riferimenti, è impossibile serializzare strutture complesse con riferimenti a oggetti in JSON. La serializzazione YAML può quindi essere più efficiente.
  8. In alcuni ambienti di codifica, l'uso di YAML può consentire a un utente malintenzionato di eseguire codice arbitrario .

osservazioni:

  1. I programmatori Python sono generalmente grandi fan di YAML, a causa dell'uso del rientro, piuttosto che della sintassi tra parentesi, per indicare i livelli.
  2. Molti programmatori considerano l'attaccamento del "significato" all'indentazione una scelta sbagliata.
  3. Se il formato dei dati lascerà l'ambiente dell'applicazione, analizzato all'interno di un'interfaccia utente o inviato in un livello di messaggistica, JSON potrebbe essere una scelta migliore.
  4. YAML può essere utilizzato direttamente per attività complesse come le definizioni grammaticali ed è spesso una scelta migliore rispetto all'invenzione di una nuova lingua.

9
È. Lo scopo di Yaml 1.2 era risolvere le poche differenze di compatibilità per rendere JSON un sottoinsieme rigoroso. Se ritieni che la specifica non abbia raggiunto il suo scopo, Erik, ti ​​preghiamo di indicare un esempio da qualche parte di JSON valido che viola le specifiche YAML e / o rompe un parser YAML conforme a 1.2 verificato.
SFEley,

32
@SFEley La specifica YAML dice che ci sono file JSON potenzialmente validi che sarebbero YAML non validi. Ma probabilmente non è in uso reale. "La RFC4627 di JSON richiede che le chiavi di mappatura siano semplicemente" DOVREBBE "essere uniche, mentre YAML insiste sul fatto che" DEVONO "essere. Tecnicamente, quindi, YAML è conforme alle specifiche JSON, scegliendo di trattare i duplicati come un errore. In pratica, poiché JSON è silenzioso su semantica di tali duplicati, gli unici file JSON portatili sono quelli con chiavi univoche, che sono quindi file YAML validi. " - yaml.org/spec/1.2/spec.html#id2759572
David C. Bishop

9
Commentare l'uso del trattino; bene, credo che potrebbe essere necessario abituarsi e non a tutti piacerebbe. Ad esempio, sono un ragazzo .NET. Stavo guardando un file travis.yml e mi chiedevo perché ci fosse un problema. Ho scoperto che avevo una scheda in cui non si trovava. Non tutti sono abituati a far esplodere le cose a causa delle preferenze di spazio / tabulazione / nuove linee.
Phil

10
Le schede semplicemente non sono consentite come caratteri di rientro. IMHO, che è un buon stile di codifica in tutte le lingue - con o senza rientro sintattico.
00prometheus

6
@Wyrmwood Personalmente mi piacciono python e YAML e li uso letteralmente ogni giorno. Tendo a usare YAML per cose che le persone devono modificare spesso e JSON per cose che le persone "potrebbero" avere bisogno di guardare. Sono stato sottoposto a valide critiche da parte degli sviluppatori C ++ che ritengono che il rientro sia fonte di confusione .... specialmente se ci sono più livelli o blocchi funzionali più lunghi. Ovviamente ... un buon codice testabile non ha queste cose, quindi di solito non è un problema. Questa è la mia osservazione personale, ma qualsiasi ricerca casuale su Google produrrà molti risultati ... quindi è banale verificarlo.
Erik Aronesty,

89

Bypassare la teoria esoterica

Questo risponde al titolo, non ai dettagli come la maggior parte ha appena letto il titolo da un risultato di ricerca su Google come me, quindi ho ritenuto necessario spiegare dal punto di vista dello sviluppatore web .

  1. YAML utilizza il rientro dello spazio, che è un territorio familiare per gli sviluppatori Python.
  2. Gli sviluppatori JavaScript adorano JSON perché è un sottoinsieme di JavaScript e può essere interpretato e scritto direttamente all'interno di JavaScript, oltre a utilizzare un modo abbreviato per dichiarare JSON, senza richiedere virgolette doppie nelle chiavi quando si usano nomi di variabili tipici senza spazi.
  3. Esistono numerosi parser che funzionano molto bene in tutte le lingue sia per YAML che per JSON.
  4. Il formato spaziale di YAML può essere molto più facile da guardare in molti casi perché la formattazione richiede un approccio più leggibile dall'uomo.
  5. La forma di YAML, pur essendo più compatta e più facile da guardare, può essere ingannevolmente difficile da modificare a mano se non hai la formattazione dello spazio visibile nel tuo editor. Le schede non sono spazi in modo da confondere ulteriormente se non si dispone di un editor per interpretare i tasti premuti negli spazi.
  6. JSON è molto più veloce da serializzare e deserializzare a causa delle funzionalità significativamente inferiori rispetto a YAML da controllare, che consente a codici più piccoli e leggeri di elaborare JSON.
  7. Un malinteso comune è che YAML ha bisogno di meno punteggiatura ed è più compatto di JSON ma questo è completamente falso. Lo spazio bianco è invisibile, quindi sembra che ci siano meno caratteri, ma se si contano gli spazi bianchi effettivi necessari per essere interpretati correttamente con YAML insieme al rientro corretto, YAML richiede effettivamente più caratteri di JSON. JSON non utilizza gli spazi bianchi per rappresentare la gerarchia o il raggruppamento e può essere facilmente appiattito rimuovendo gli spazi bianchi non necessari per un trasporto più compatto.

L'elefante nella stanza: Internet stesso

JavaScript domina così chiaramente il web con un enorme margine e gli sviluppatori JavaScript preferiscono utilizzare JSON come formato di dati in modo schiacciante insieme alle API Web più diffuse, quindi diventa difficile discutere di utilizzare YAML su JSON quando si fa la programmazione web in senso generale poiché probabilmente si sarà superato in un ambiente di squadra. In effetti, la maggior parte dei programmatori web non è nemmeno a conoscenza dell'esistenza di YAML, per non parlare della possibilità di utilizzarlo.

Se si sta eseguendo una programmazione Web, JSON è la strada predefinita da percorrere perché non è necessario alcun passaggio di traduzione quando si lavora con JavaScript, quindi è necessario elaborare un argomento migliore per utilizzare YAML su JSON in quel caso.


10
Non sono d'accordo sul fatto che gli sviluppatori di Python preferiscano YAML. Pythons dict è fondamentalmente JSON, anche l'elenco dei dicts è fondamentalmente JSON. Python ha compilato in json lib. In una nota a margine sono uno sviluppatore Python e preferisco JSON (la maggior parte degli sviluppatori Python che conosco preferiscono JSON).
Karantan,

6
L'unica cosa che mi preoccupa davvero dello spazio bianco è quanto sia facile essere confusi e sbagliarli perché rientrare o no potrebbe significare il suo nidificato o allo stesso livello e anche molto facile sbagliarlo se non lo fai avere una regola guida. è come gli oops nascosti, questo non è uno scenario di tipo così facile che nessuno dice quando si modifica yaml. non ho mai avuto questo problema con JSON.
Jason Sebring,

6
@JasonSebring. Ti chiederesti quasi perché YAML abbia scelto gli spazi. Il mio primo "tuffo nell'oceano" di YAML ha portato a un'app rotta ... tutto a causa degli spazi. Avresti pensato che forse usare un rientro senza usare caratteri non stampabili avrebbe avuto molto più senso! (Cioè, perché mai non hanno scelto '.' Piuttosto che ''?) Per capire YAML devi andare alle specifiche. Per capire JSON non è necessario. (Sono stato al primo, e mai al secondo). Questo per me indica un formato che non è realmente 'leggibile dall'uomo'
cmroanirgo,

7
@cmroanirgo yah questa è stata la mia esperienza. Il mio capo ci ha costretto a usare YAML su JSON e ha reso le cose inutilmente scadenti da modificare e ingerire. Ho scritto questo perché sperare che i voti mi confermino.
Jason Sebring,

3
Problemi con le schede in YAML significa (a) non leggere il messaggio di errore e (b) avere un editor che non evidenzia le schede. Entrambi i problemi sono facilmente rettificabili, quindi non capisco i reclami.
toolforger,

38

Questa domanda ha 6 anni, ma stranamente nessuna delle risposte affronta davvero tutti e quattro i punti (velocità, memoria, espressività, portabilità).

Velocità

Ovviamente questo dipende dall'implementazione, ma poiché JSON è così ampiamente utilizzato e così facile da implementare, ha avuto la tendenza a ricevere un maggiore supporto nativo, e quindi la velocità. Considerando che YAML fa tutto ciò che fa JSON, più un camion carico in più, è probabile che di implementazioni comparabili di entrambi, quello JSON sarà più veloce.

Tuttavia, dato che un file YAML può essere leggermente più piccolo della sua controparte JSON (a causa di meno caratteri "e ,caratteri), è possibile che un parser YAML altamente ottimizzato possa essere più veloce in circostanze eccezionali.

Memoria

Fondamentalmente si applica lo stesso argomento. È difficile capire perché un parser YAML sarebbe mai più efficiente della memoria di un parser JSON, se rappresentano la stessa struttura di dati.

espressività

Come notato da altri, i programmatori Python tendono a preferire i programmatori YAML, JavaScript a JSON. Farò queste osservazioni:

  • È facile memorizzare l'intera sintassi di JSON e quindi avere molta fiducia nel comprendere il significato di qualsiasi file JSON. YAML non è veramente comprensibile da nessun essere umano. Il numero di sottigliezze e casi limite è estremo.
  • Poiché pochi parser implementano l'intera specifica, è ancora più difficile essere certi del significato di una determinata espressione in un determinato contesto.
  • La mancanza di commenti in JSON è, in pratica, un vero dolore.

portabilità

È difficile immaginare un linguaggio moderno senza una libreria JSON. È anche difficile immaginare un parser JSON che implementa qualcosa di meno della specifica completa. YAML ha un supporto diffuso, ma è meno onnipresente di JSON e ogni parser implementa un sottoinsieme diverso. Quindi i file YAML sono meno interoperabili di quanto si pensi.

Sommario

JSON è il vincitore per prestazioni (se pertinente) e interoperabilità. YAML è migliore per i file gestiti dall'utente. HJSON è un compromesso decente sebbene con portabilità molto ridotta. JSON5 è un compromesso più ragionevole, con una sintassi ben definita.


3
In realtà pensavo che YAML fosse più piccolo a causa di personaggi invisibili che mi hanno ingannato come tale. Invisibile => Non c'è, beh in realtà no. Se conti che i personaggi invisibili devono trovarsi lì, specialmente quando YAML ottiene un annidamento più grande, supera rapidamente JSON. Ho solo pensato che fosse molto interessante dato che la parte leggibile dall'uomo inganna la maggior parte di noi in quell'idea fino a quando non ci ho davvero pensato perché puoi appiattire JSON e YAML, non così tanto. Ho anche scoperto che YAML è molto difficile da modificare a mano, non da leggere, basta modificare poiché è necessario attivare le guide dell'editor, confondendo facilmente gli elementi nidificati.
Jason Sebring,

1
Sento che nessuna delle risposte qui lo afferma esplicitamente: "Per i file settings / config, YAML è migliore (per i motivi sopra menzionati da tutti). Per l'interoperabilità macchina / macchina usa JSON". In altre parole: se il tuo pubblico di destinazione è un essere umano, YAML è migliore. Se la destinazione è un altro programma (ma vuoi comunque che i dati siano leggibili dall'uomo), usa JSON.
Florin T.,

È vero, ma la domanda prevedeva alcuni parametri piuttosto specifici su come volessero confrontarli. Personalmente, non avrei mai usato YAML per niente. Utilizzerei JSON per l'interoperabilità o JSON6 se la manutenzione umana è importante.
Steve Bennett,

29

GIT e YAML

Le altre risposte sono buone. Leggi prima quelli. Ma a volte aggiungerò un'altra ragione per usare YAML: git .

Sempre più progetti di programmazione utilizzano repository git per la distribuzione e l'archiviazione. E, mentre la cronologia di un repository git può ugualmente memorizzare file JSON e YAML, il metodo "diff" utilizzato per tracciare e visualizzare le modifiche a un file è orientato alla linea. Poiché YAML è costretto ad essere orientato alla linea, qualsiasi piccola modifica in un file YAML è più facile da vedere da parte di un essere umano.

È vero, ovviamente, che i file JSON possono essere "resi belli" ordinando le stringhe / chiavi e aggiungendo il rientro. Ma questo non è il valore predefinito e sono pigro.

Personalmente, generalmente utilizzo JSON per l'interazione da sistema a sistema. Uso spesso YAML per file di configurazione, file statici e file tracciati. (In genere evito anche di aggiungere ancore relazionali YAML. La vita è troppo breve per dare la caccia agli anelli.)

Inoltre, se la velocità e lo spazio sono davvero una preoccupazione, non uso neanche. Potresti voler dare un'occhiata a BSON.


22

Trovo che YAML sia più facile per gli occhi: meno parentesi "", ecc. Anche se in YAML c'è il fastidio delle schede ... ma si capisce.

In termini di prestazioni / risorse, non mi aspetto grandi differenze tra i due.

Inoltre, stiamo parlando di file di configurazione e quindi non mi aspetto un'alta frequenza di attività di codifica / decodifica, no?


22
Mi chiedevo cosa intendevi con il fastidio delle schede . Credo che i caratteri di tabulazione non siano ammessi in yaml , che personalmente ritengo sia una buona idea in qualsiasi file sorgente .
poolie,

6
@poolie: jldupont si riferisce probabilmente allo spazio bianco principale sintatticamente significativo in YAML.
naught101

10
OK ma non sono schede.
poolie,

20

Se non hai bisogno di alcuna funzionalità che YAML ha e JSON no, preferirei JSON perché è molto semplice ed è ampiamente supportato (ha molte librerie in molte lingue). YAML è più complesso e ha meno supporto. Non penso che la velocità di analisi o l'uso della memoria siano molto diversi, e forse non una grande parte delle prestazioni del tuo programma.


3
in che modo YAML è più complesso?
Accatyyc,

18
Ad esempio, YAML supporta le ancore, come è stato notato in un'altra risposta. Esistono altre funzionalità, come i tipi di dati estensibili. Ciò rende più complesso l'analisi e spiega perché YAML ha specifiche più grandi. Può compromettere le prestazioni a seconda dell'implementazione del parser (dai un'occhiata a questa domanda: stackoverflow.com/questions/2451732/… ).
Anton Strogonoff,

5
La complessità è migliore della semplicità se quella complessità ti consente di ottenere la massima semplicità complessiva. Questo è certamente vero a seconda della complessità del modello di dati.
Jonathan Neufeld,

3
Potrei essere un po 'in ritardo qui, ma YAML può aggiungere commenti mentre JSON non può. Per me è di grande aiuto quando si tratta della documentazione delle specifiche
Moses Liao GZ,

@Accatyyc. Penso che il fatto che le persone stiano facendo domande sulla differenza è un segno sicuro che YAML non è poi così facile. Non ho mai fatto una domanda su JSON (tranne "perché non posso avere commenti in esso?")
cmroanirgo

15

Tecnicamente YAML offre molto di più di JSON (YAML v1.2 è un superset di JSON):

  • Commenti
  • ancore ed eredità - esempio di 3 articoli identici:

    item1: &anchor_name
      name: Test
      title: Test title
    item2: *anchor_name
    item3:
      <<: *anchor_name
      # You may add extra stuff.
  • ...

Il più delle volte le persone non useranno quelle funzionalità extra e la differenza principale è che YAML usa il rientro mentre JSON usa le parentesi . Questo rende YAML più conciso e leggibile (per l'occhio allenato).

Quale scegliere?

  • Le funzionalità extra di YAML e la notazione concisa lo rendono una buona scelta per i file di configurazione ( file non forniti dall'utente).
  • Le funzionalità limitate di JSON , l'ampio supporto e l'analisi più rapida lo rendono un'ottima scelta per l'interoperabilità e i dati forniti dall'utente .

4

Dal momento che questa domanda è ora evidente nella ricerca di YAML e JSON, vale la pena notare una differenza raramente citata tra i due: la licenza. JSON pretende di avere una licenza alla quale gli utenti JSON devono attenersi (incluso il legalmente ambiguo "deve essere usato per il Bene, non per il Male"). YAML non presenta alcuna richiesta di licenza e ciò potrebbe costituire una differenza importante (per il tuo avvocato, se non per te).


Non uso JSON, utilizzo esattamente l'equivalente di JSON senza chiamarlo JSON. Lo chiamo PS-OFF. Mi farai causa per aver usato { "": #, [] }???
Andrew,

4

A volte non devi decidere l'uno sull'altro.

In Go, ad esempio, puoi avere entrambi contemporaneamente:

type Person struct {
    Name string `json:"name" yaml:"name"`
    Age int `json:"age" yaml:"age"`
}

3

Da: Arnaud Lauret Book "The Design of Web API". :

Il formato dei dati JSON

JSON è un formato di dati di testo basato sul modo in cui il linguaggio di programmazione JavaScript descrive i dati ma, nonostante il suo nome, è completamente indipendente dal linguaggio (vedere https://www.json.org/ ). Utilizzando JSON , è possibile descrivere oggetti contenenti coppie nome / valore non ordinate e anche matrici o elenchi contenenti valori ordinati, come mostrato in questa figura.

inserisci qui la descrizione dell'immagine

Un oggetto è delimitato da parentesi graffe ({}). Un nome è una stringa tra virgolette ("nome") ed è separato dal suo valore da due punti (:). Un valore può essere una stringa come "valore", un numero come 1,23, un valore booleano (vero o falso), il valore null null, un oggetto o un array. Una matrice è delimitata da parentesi ([]) e i suoi valori sono separati da virgole (,). Il formato JSON può essere facilmente analizzato utilizzando qualsiasi linguaggio di programmazione. È anche relativamente facile da leggere e scrivere. È ampiamente adottato per molti usi come database, file di configurazione e, naturalmente, API.

YAML

YAML (YAML Ain't Markup Language) è un formato di serializzazione dei dati a misura d'uomo. Come JSON, YAML ( http://yaml.org ) è un formato dati chiave / valore. La figura mostra un confronto tra i due.

inserisci qui la descrizione dell'immagine

Nota i seguenti punti:

  • Non ci sono virgolette doppie ("") attorno ai nomi e ai valori delle proprietà in YAML .

  • Le parentesi graffe strutturali ({}) e le virgole (,) di JSON sono sostituite da nuove righe e rientri in YAML .

  • Le parentesi di matrice ([]) e le virgole (,) sono sostituite da trattini (-) e newline in YAML .

  • A differenza di JSON , YAML consente commenti che iniziano con un segno di hash (#). È relativamente facile convertire uno di questi formati nell'altro. Attenzione, perderai commenti quando convertirai un documento YAML in JSON .


0

Trovo sia YAML che JSON molto efficaci. Le uniche due cose che dettano davvero quando una è usata sull'altra per me è una, con cui la lingua viene usata più frequentemente. Ad esempio, se sto usando Java, Javascript, userò JSON. Per Java, userò i loro oggetti, che sono praticamente JSON ma privi di alcune funzionalità, e lo convertirò in JSON se ne ho bisogno o lo farò in JSON in primo luogo. Lo faccio perché è una cosa comune in Java e rende più facile per gli altri sviluppatori Java modificare il mio codice. La seconda cosa è se lo sto usando per il programma per ricordare gli attributi, o se il programma sta ricevendo istruzioni sotto forma di un file di configurazione, in questo caso userò YAML, perché è molto facile da leggere, ha una buona sintassi, ed è molto facile da modificare, anche se non hai idea di come funzioni YAML. Quindi, il programma lo leggerà e lo convertirà in JSON, o qualunque cosa sia preferita per quella lingua.

Alla fine, onestamente non importa. Sia JSON che YAML sono facilmente leggibili da qualsiasi programmatore esperto.


-1
  • JSON non è in grado di gestire dati di grandi dimensioni confrontando yml

  • Non adatto per la gestione di diversi formati multimediali.

  • JSON non ha una funzione per supportare i "commenti". Questo potrebbe essere incluso solo come un attributo aggiuntivo.

  • YAML presenta alcuni vantaggi rispetto a JSON come l'autoreferenziazione, il supporto per tipi di dati complessi, valori letterali a blocchi incorporati, commenti e altro.

  • JSON è leggibile solo mentre YAML può essere sia leggibile che modificabile.
  • JSON è un sottoinsieme di YAML in modo che i parser YAML possano essere in grado di analizzare JSON.
  • YAML non usa delimitatori extra, quindi è più leggero di XML e JSON.

Cosa intendi per "dati di grandi dimensioni" e punti "solo leggibili"? JSON è un formato di dati, cosa può avere un concetto astratto con queste due limitazioni?
João Farias,

4
@ JoãoFarias Supponiamo che tu abbia 1 GB di file JSON e 1 GB di file CSV e 256 MB di memoria. È possibile elaborare il file CSV riga per riga, con JSON non è facilmente possibile. Probabilmente è ancora più semplice analizzare il file YAML riga per riga, di quanto lo sarebbe mai stato analizzare JSON.
NeverEndingQueue,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.