2012-09-10 19 views
12

Stavo trovando la differenza tra JSON e XML. Come, entrambi sono per lo scambio di dati tra sistemi, ma c'è una grande differenza tra JSON e XML che JSON è più leggero di XML. Ma non riesco a trovare il vero motivo per cui il JSON è leggero. Cosa rende JSON leggero?Perché JSON è più leggero di XML?

Una risposta che ho trovato è che in JSON non c'è un sacco di markup xml extra. Che cosa significa in realtà. Ci sono altri motivi che spiegano perché JSON sia leggero?

+1

Una risposta completa considera tutte e tre le risposte principali che hai ricevuto. Se si sta tentando di scegliere tra XML e JSON, sarebbe opportuno chiedersi quale scopo servirà. Se si desidera la serializzazione compatta per la trasmissione o l'archiviazione di massa, JSON è l'ideale. Se si desidera eseguire la manipolazione dei documenti, XML è, come rileva Kerrek, molto meglio supportato dalle tecnologie aderenti. Se si utilizza il framework .NET questo è meno importante perché LINQ può eseguire query/trasformare praticamente qualsiasi cosa. –

+1

@PeterWone: Non c'è niente come "le prime tre risposte" su StackOverflow, perché l'ordine varia nel tempo in base ai voti espressi. Per fare riferimento a risposte specifiche, si prega di nominare l'autore o dare il permalink. Nello specifico, al momento in cui scriviamo, abbiamo una risposta con 21 voti e tre risposte con 5 voti ciascuno. Quindi quali sono i "primi tre"? :) – KPM

+0

@ KPM - sì, ed è esattamente quello che intendevo: le tre risposte con il punteggio più alto al momento del commento. Ho * fatto * il nome di uno degli autori, e il mio commento era in grado di stare da solo; Cito quelle risposte puramente come cortesia agli autori. Ad ogni modo, eccoci anni dopo e sono ancora le prime tre risposte e le tre migliori risposte. –

risposta

27

Hai cercato esempi di documenti JSON e XML?

Mentre sia JSON che XML sono utilizzati per rappresentare arbitrariamente gli alberi , XML è molto più dettagliato. Ogni elemento nell'albero ha un nome (il nome del tipo di elemento) e l'elemento deve essere racchiuso in una coppia di tag corrispondente. Al contrario, JSON esprime alberi in un tipo di notazione "nested array" simile a quello di Javascript (infatti, un documento JSON può essere letteralmente analizzato come Javascript per produrre l'array corrispondente).

Dai uno sguardo allo at the differences.

XML è naturalmente semanticamente più ricco, poiché gli elementi possono essere decorate con un numero arbitrario di attributi , e può contenere elementi contenuto misto di flusso di testo libero e altri elementi nidificati. Ad esempio, il seguente frammento sarebbe noioso per esprimere come JSON:

<paragraph> 
    This is an entire paragraph of <emph>text</emph>. It is interspersed with 
    further, nested <emph>XML elements</emph>, as well as the occasional 
    <link href="http://stackoverflow.com/a/12346394/596781">hyperlink</link>. 
</paragraph> 

D'altra parte, i dati -come documenti possono essere molto più semplice in JSON. Immagina:

<properties> 
    <property type="int" name="ID">123</property> 
    <property type="date" name="birthday">19700101</property> 
    <references> 
     <url>http://stackoverflow.com/a/12346394/596781</url> 
     <doi>something.made.up</doi> 
    </references> 
</properties> 

Questo diventa un array JSON molto compatto.

Una considerazione secondaria è la quantità di set di strumenti che circondano entrambi i formati. Mentre gli strumenti JSON riguardano principalmente l'analisi dei dati JSON, il W3C ha sviluppato un insieme molto ampio di tecnologie aderenti per manipolare XML in modo sistematico, come XSLT e XPATH.

In breve, e come opinione molto personale, direi che XML riguarda il documento e JSON riguarda i dati. XML si sentirà più naturale e utile per documenti strutturati di grandi dimensioni, mentre JSON è spesso il formato più semplice e meno verboso per la trasmissione di serie di dati.

+1

Con XML dichiareresti tipi di dati nello schema e non come parte dei tuoi dati. un migliore esempio di XML sarebbe '' –

+1

Molti degli esempi XML sul link fornire non è valido e non è un vero paragone con il JSON perché intenzionalmente ha reso l'XML gonfio –

8

La notazione JSON è terser. XML ripete il tipo di nodo nel tag di chiusura, mentre JSON riduce lo scope di chiusura usando uno stack. XML supporta gli spazi dei nomi, per quanto ne so JSON no. Gli schemi XML in genere includono le informazioni sul tipo, ma non vi è alcun motivo istruttivo per non farlo con JSON. Va notato che l'ascesa di JSON è dovuta in gran parte al fatto che è funzionalmente equivalente a XML in tutti gli aspetti che sono in realtà utilizzati. Over the wire la differenza scompare non appena la compressione LZW entra in gioco perché XML si comporta bene con la compressione del dizionario.

8

Il modello di dati è diverso.A parte la mancanza di markup, che tu stesso notato, JSON, inoltre, non ha tutte le altre funzionalità XML, come ad esempio:

  • istruzioni di lavorazione
  • Commenti
  • Attributi

qui , non solo i dati stessi sono più leggeri, ma anche qualsiasi libreria che implementa il modello di dati. Questo rende il rendering, l'analisi, l'elaborazione di JSON con linguaggi non JavaScript molto più velocemente. Per di JavaScript, questo è un gioco da ragazzi, come JSON è attuale codice JavaScript, e quindi molto più "leggero" per un parser JavaScript per elaborare

7

Semplicità

XML è più semplice di SGML, ma JSON è molto più semplice di XML. JSON ha una grammatica molto più piccola e mappa più direttamente sulle strutture di dati usate nei moderni linguaggi di programmazione.

estensibilità

JSON non è estensibile, perché non ha bisogno di essere. JSON non è un linguaggio di markup del documento, quindi non è necessario definire nuovi tag o attributi per rappresentare i dati al suo interno.

interoperabilità

JSON ha lo stesso potenziale interoperabilità come XML.

apertura

JSON è almeno altrettanto aperti come XML, forse di più perché non è al centro delle lotte di standardizzazione aziendale/politica.

Content link

3

Ci sono diversi fattori in gioco qui:

(a) il modello di dati JSON è più semplice; ha meno tipi di oggetti e hanno meno proprietà.

(b) il modello di dati JSON è più vicino ai dati modelli disponibili nei linguaggi di programmazione comuni come Javascript, quindi meno la conversione dei dati è necessaria quando si utilizza nelle lingue

(c) la sintassi serializzato di JSON ha meno ridondanza (è meno dettagliata) rispetto alla sintassi di XML.

Naturalmente, queste differenze sono perché JSON è stato progettato per uno scopo diverso da XML.

3

È solo più piccolo di un fattore lineare. Questo non è molto più piccolo. Una volta compressi, entrambi i formati occupano lo stesso spazio.

Ricordare che i programmi che già utilizzano XML non diventeranno più semplici consentendo anche JSON, diventeranno più complessi. Standard aggiuntivi complicano le cose a meno che non ti liberi dei vecchi standard e l'XML non sparirà presto.

XML è stato progettato intorno al concetto di un documento. JSON parlava più di semplici strutture di dati. JSON si preoccupa meno degli standard, ad es.non ha schemi, quindi la portabilità potrebbe essere più difficile di quella di qualcuno esperto nell'uso di XML. Di solito quando devo usare un servizio di ReSTful, mi viene detto di 'leggere il codice' o 'guardare i dati JSON stessi' per capirlo. Cioè formati di dati impliciti (e abbastanza spesso, mutevoli).

Entrambi i formati soffrono del problema che possono, nella loro forma naturale, rappresentare solo alberi, non grafici di dati. Non mi piace nessuno dei due formati. Sembrano entrambi mezzi finiti. La serializzazione degli oggetti risolve più problemi.

0

Perché dovremmo dimenticare l'aspetto della sicurezza? Durante il trasferimento dei dati sulla rete, XML è più sicuro in quanto possiamo preparare la busta XML e fare la richiesta SOAP.

Problemi correlati