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.