2012-09-10 26 views
12

Estaba encontrando la diferencia entre JSON y XML. Como, ambos son para el intercambio de datos entre sistemas, pero hay una gran diferencia entre JSON y XML de que JSON es más liviano que XML. Pero no puedo encontrar la razón real de por qué el JSON es liviano. ¿Qué hace que JSON sea liviano?¿Por qué JSON es más ligero que XML?

Una respuesta que encontré es que en JSON no hay una gran cantidad de marcas adicionales de XML. ¿Qué significa realmente? ¿Hay alguna razón más que describa por qué JSON es liviano?

+1

Una respuesta completa considera las tres respuestas principales que recibió. Si está tratando de elegir entre XML y JSON, sería bueno que se pregunte para qué sirve. Si desea serialización compacta para transmisión o almacenamiento masivo, JSON es la opción. Si desea realizar la administración de documentos, XML es, como señala Kerrek, mejor respaldado por las tecnologías adherentes. Si usa el framework .NET esto es menos importante porque LINQ puede consultar/transformar prácticamente cualquier cosa. –

+1

@PeterWone: No hay nada como "las tres mejores respuestas" en StackOverflow, porque el orden varía en el tiempo según los votos emitidos. Para referirse a respuestas específicas, por favor nombre al autor o dele el enlace permanente. Específicamente, en el momento de escribir estas líneas, tenemos una respuesta con 21 votos y tres respuestas con 5 votos cada una. Entonces, ¿cuáles son los "tres primeros"? :) – KPM

+0

@KPM - sí, y eso es exactamente lo que quise decir: las tres respuestas más importantes en el momento del comentario. * Nombré * a uno de los autores, y mi comentario fue capaz de sostenerse por sí mismo; Menciono esas respuestas simplemente como una cortesía para los autores. De todos modos, aquí estamos años más tarde y siguen siendo las tres respuestas principales, así como las tres respuestas principales. –

Respuesta

27

¿Tiene miré en ejemplos de documentos JSON y XML?

Mientras que JSON y XML se usan para representar árboles arbitrarios de datos, XML es mucho más detallado. Todos los elementos del árbol tienen un nombre (el nombre del tipo de elemento) y el elemento debe estar encerrado en un par de etiquetas coincidentes. Por el contrario, JSON expresa árboles en un tipo de anotación "anidada" similar a la de Javascript (de hecho, un documento JSON puede analizarse literalmente como Javascript para dar como resultado la matriz correspondiente).

Echa un vistazo a at the differences.

XML es, por supuesto semánticamente más rica, ya que los elementos pueden ser decorados con un número arbitrario de atributos , y los elementos puede contener contenido mixto de flujo de texto libre y, además, elementos anidados. Por ejemplo, el siguiente fragmento sería tedioso para expresar como 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> 

Por otro lado, los datos -como los documentos pueden ser mucho más simple en JSON. Imagine esto:

<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> 

Esto se convierte en una matriz JSON muy compacta.

Una consideración secundaria es la cantidad de conjuntos de herramientas que rodean ambos formatos. Mientras que las herramientas JSON tratan principalmente sobre el análisis de datos JSON, el W3C ha desarrollado un gran conjunto de tecnologías adherentes para manipular XML de forma sistemática, como XSLT y XPATH.

En pocas palabras, y como una opinión muy personal, diría que XML es sobre el documento y JSON es sobre datos. XML se sentirá más natural y útil para documentos grandes y estructurados, mientras que JSON suele ser el formato más simple y menos detallado para la transmisión de conjuntos de datos.

+1

Con XML declararía tipos de datos en su esquema y no como parte de sus datos. un mejor ejemplo de XML sería '' –

+1

Muchos de los ejemplos de XML en el enlace proporcionar no son válidos y no es realmente una comparación justa con el JSON ya que intencionalmente hicieron XML inflado –

8

La notación JSON es terser. XML repite el tipo de nodo en la etiqueta de cierre, mientras que JSON solo deduce el alcance de cierre utilizando una pila. XML admite espacios de nombres, por lo que sé que JSON no lo hace. Los esquemas XML suelen incluir información de tipo, pero no hay ninguna razón intrínseca para que no pueda hacer esto con JSON. Cabe señalar que el aumento de JSON se debe en gran medida al hecho de que es funcionalmente equivalente a XML en todos los aspectos que en realidad son utilizados. A través del cable, la diferencia desaparece tan pronto como la compresión LZW entra en juego porque XML rinde bien a la compresión del diccionario.

8

El modelo de datos es diferente.Aparte de la falta de marcado, que se ha notado usted mismo, también JSON no tiene todas las otras características de XML, tales como:

  • Las instrucciones de procesamiento
  • Comentarios
  • Atributos

ahí , no solo los datos en sí son más livianos, sino también cualquier biblioteca que implemente el modelo de datos. Esto hace que renderizar, analizar y procesar JSON con idiomas que no sean JavaScript sea mucho más rápido. JavaScript, esto es una obviedad, como JSON es real código JavaScript, y por lo tanto mucho más "ligera" para un analizador JavaScript para procesar

7

Simplicidad

XML es más simple que SGML, pero JSON es mucho más simple que XML. JSON tiene una gramática mucho más pequeña y mapas más directamente en las estructuras de datos utilizados en los lenguajes de programación modernos.

extensibilidad

JSON no es extensible, ya que no tiene por qué ser. JSON no es un lenguaje de marcado de documentos, por lo que no es necesario definir nuevas etiquetas o atributos para representar datos en él.

Interoperabilidad

JSON tiene el mismo potencial de interoperabilidad como XML.

apertura

JSON es al menos tan abiertos como XML, tal vez más, ya que no está en el centro de las luchas de normalización corporativos/política.

Content link

3

Hay varios factores en juego aquí:

(a) el modelo de datos JSON es más simple; tiene menos tipos diferentes de objetos y tienen menos propiedades.

(b) el modelo de datos JSON está más cerca de los datos de los modelos disponibles en lenguajes de programación comunes, tales como Javascript, por lo que se necesita menos de conversión de datos cuando se utilizan estos idiomas

(c) la sintaxis serializada de JSON tiene menos redundancia (es menos detallado) que la sintaxis de XML.

Por supuesto, estas diferencias se deben a que JSON se diseñó para un propósito diferente al XML.

3

Es simplemente más pequeño por un factor lineal. Eso no es realmente más pequeño. Una vez comprimidos, ambos formatos ocupan el mismo espacio.

Recuerde que los programas que ya tienen que usar XML no serán más simples al permitir también JSON, se volverán más complejos. Los estándares adicionales solo complican las cosas a menos que te deshagas de los estándares anteriores, y XML no va a desaparecer pronto.

XML se diseñó en torno al concepto de un documento. JSON tenía más que ver con estructuras de datos simples. A JSON le importan menos los estándares, es decirno tiene esquemas, por lo que la portabilidad puede ser más difícil que para alguien experto en el uso de XML. Por lo general, cuando tengo que usar algún servicio ReSTful, me dicen que 'lea el código' o 'mire los datos JSON' para comprenderlo. Es decir. formatos de datos implícitos (y bastante a menudo, cambiantes).

Ambos formatos adolecen del problema de que, en su forma natural, solo representan árboles, no gráficos de datos. No me gusta ninguno de los formatos. Ambos parecen a medio terminar. La serialización de objetos resuelve más problemas.

0

¿Por qué deberíamos olvidar el aspecto de seguridad? Al transferir datos a través de la red, XML es más seguro ya que podemos preparar un sobre XML y hacer una solicitud SOAP.

Cuestiones relacionadas