Possiamo sostituire completamente XML con JSON? [chiuso]

77

Sono sicuro che molti sviluppatori hanno familiarità con XML e JSON , e hanno usato entrambi. Quindi non ha senso spiegare cosa sono, e qual è il loro scopo, anche in breve.

Se proviamo a mappare i loro concetti, possiamo dire (correggimi se sbaglio):

  1. I tag XML sono equivalenti a JSON {}
  2. Gli attributi XML sono equivalenti alle proprietà JSON
  3. La raccolta di tag XML equivale a JSON []

L'unica cosa che posso pensare, che non esiste in JSON, è XML Namespaces .

La domanda è, considerando questa mappatura, e considerando che JSON è molto più leggero in questa mappatura, possiamo vedere un mondo in futuro (o almeno teoricamente pensare a un mondo) senza XML, ma con JSON che fa tutto ciò che fa XML? Possiamo usare JSON ovunque sia usato XML?

PS: Tieni presente che ho visto questo domanda. È qualcosa di completamente diverso da quello che sto chiedendo qui. Quindi, per favore non menzionare duplicate .

    
posta Saeed Neamati 16.09.2011 - 12:33
fonte

12 risposte

153

La cosa che conferisce all'XML il suo potere e molta della sua complessità è il contenuto misto. Roba come questa:

<p>A <b>fine</b> mess we're in!</p>

Non provare nemmeno a farlo in JSON, o manipolarlo nei linguaggi di programmazione convenzionali. Non sono stati progettati per il lavoro.

Questo tipo di domande proviene solitamente da persone che dimenticano che la M in XML sta per markup. È un modo di prendere testo in chiaro e aggiungere markup per creare testo strutturato. È abbastanza utile anche per i dati obsoleti, ma non è quello per cui è stato progettato o dove si trovano i suoi punti di forza principali. Esistono molti modi per gestire dati semplici e JSON è uno di questi.

    
risposta data 16.09.2011 - 14:04
fonte
31

La differenza principale, penso, sta nel fatto che XML è progettato per essere auto-esplicativo con i suoi dtd e tutto.

Con JSON, devi assumere molto sui dati che stai ricevendo.

    
risposta data 16.09.2011 - 12:53
fonte
20

Una traduzione letterale a JSON è spesso meno succinta e meno chiara. Prendere in considerazione:

<foo>
   <x:bar x:prop1="g">
      <quuz />
   </bar>
</foo>

La rappresentazione JSON più efficace che ho visto di questo:

{"localName":"foo",
 "children": // you need to have a special array to hold all children
 [
    {"localName": "bar",
     "namespace": "x"
        // once again, to ensure that there are no collisions,
        // attributes should be brought out into their own JSON structure 
        "attributes":[
            {"localName":"prop1",
             "namespace":"x",
             "value":"g"}
        ],
         "children":[
             {"name":"quux"}
         ]
     }
 ]}

Ora, immagina quello per un intero file XML. Non sto dicendo che JSON non ha il suo posto, ma XML non dovrebbe essere escluso.

    
risposta data 16.09.2011 - 13:10
fonte
14

JSON e XML sono entrambi modi di formattare i dati. Entrambi sono in grado di farlo perfettamente bene, quindi JSON può fare tutto ciò che fa XML? Sì.

Ma ..... Una domanda più pertinente potrebbe non essere ciò che XML / JSON può fare, ma piuttosto, cosa puoi fare con XML / JSON.

Ci sono diverse cose che puoi fare con con XML che non penso sia possibile con JSON, come tradurre con XLST, cercare con XPath e validare con schemi. Tutto molto, molto utile.

    
risposta data 16.09.2011 - 13:04
fonte
11

Esistono molte funzionalità che utilizzano XSLT che potrebbero non essere possibili con JSON. Quindi, se non sono funzionalmente equivalenti, non potrebbero sostituirsi l'un l'altro.

    
risposta data 16.09.2011 - 12:50
fonte
7

JSON è abbastanza nuovo e i sistemi legacy non lo supportano. L'aggiornamento dei sistemi legacy è costoso e introduce bug. JSON non sostituirà l'XML in qualsiasi momento nel prossimo futuro.

    
risposta data 16.09.2011 - 12:39
fonte
7

Il fatto è che dovremo convivere con entrambi per un lungo periodo e che essere un bigotto JSON è "considerato dannoso".

    
risposta data 16.09.2011 - 14:42
fonte
6

Direi che il cwallenpoole è un punto eccellente. Mentre la maggior parte di XML può essere tradotta in JSON, se farlo è meglio perché è un punto a parte.

JSON si presta alle strutture dati almeno tanto quanto XML e probabilmente meglio, ma XML legge molto più naturalmente di JSON quando segna documenti testuali, dove i tag sono usati all'interno di un flusso di testo più ampio piuttosto che semplicemente come un modo per delimitare una gerarchia di campi.

Sebbene HTML 5 possa avere il proprio parser, ciò lascia comunque applicazioni come DocBook.

    
risposta data 16.09.2011 - 13:21
fonte
6

Dipende dal dominio. In termini di servizi web? Assolutamente. È assolutamente vergognoso che i fornitori stiano ancora spingendo SOAP sui propri clienti. REST + JSON fino in fondo.

Ora, quando parli di dati complessi e strutturati con informazioni di stile come Docbook o altre implementazioni? Questo è un dominio appropriato per XML.

    
risposta data 16.09.2011 - 17:46
fonte
3

Diventa brutto quando provi a modellare questi due oggetti in JSON:

<customer><name>John Doe</name></customer>
<employee><name>John Doe</name</employee>

Usando JSON come al solito nel 99% dei casi ci si perde con:

{ name: "John Doe" } 

E ora devi aggiungere alcune meta-strutture e tutta la bellezza di JSON se n'è andata mentre ti mancano gli aspetti negativi.

    
risposta data 19.09.2011 - 00:07
fonte
3

Perché limitarti a JSON quando YAML è un super set e molto più espressivo e quindi potente di XML o JSON.

Detto questo, se usi i quadri di serializzazione corretti dovresti essere in grado di serializzare e de-serializzare tutti i formati sopra citati con un paio di semplici linee di codice.

    
risposta data 19.09.2011 - 03:10
fonte
3

Non so se esiste una tale funzione per JSON, ma almeno in .NET è possibile convalidare XML contro uno schema dato. Questo è un vantaggio prezioso di XML nei miei occhi.

    
risposta data 20.09.2011 - 05:37
fonte

Leggi altre domande sui tag