2009-02-25 151 views

Respuesta

17

En resumen, JSON (que se puede considerar como un subconjunto de JavaScript) es mucho más simple que XML. Esto tiene varios efectos secundarios positivos

  • JSON es más pequeño que XML
  • correspondiente JSON es más rápido, es decir, la sintaxis más simple -> análisis más fácil (análisis sintáctico rápido)

En mi primera respuesta a esta pregunta, mi punto de vista de JSON era el de JavaScript, lo consideré como un pariente cercano. Pero JSON es algo independiente y JSON.org hace un gran trabajo al describir JSON. También proporciona una biblioteca de compatibilidad para JavaScript que agrega soporte para JSON.parse y JSON.stringify cuando los navegadores no lo admiten.

Mientras que eval en el momento (mediados de 2009) se utilizó para evaluar JavaScript, también podría evaluar JSON, es decir, analizar JSON, pero se consideró inseguro, ya que permitió que se ejecutara JavaScript arbitrario en su lugar.

JSON resulta ser una muy buena opción para los navegadores y una forma natural de evolucionar la plataforma debido a su estrecha relación con JavaScript.

Si bien XML puede considerarse que tiene un mayor rigor debido al hecho de que puede escribirlo, también son cosas que lo hacen mucho más lento (también es un poco detallado en mi opinión). Pero si esto es algo que realmente quieres, debes usarlo, XML es igualmente omnipresente.

No entraré en un debate sobre dinamismo dinámico o estático, pero diré esto. Es realmente fácil agregar cosas encima de los datos sin esquema y hay muchas maneras de hacer la validación, independientemente del esquema o de ningún esquema.

+0

¿En qué medida JSON es más adecuado que XML para representar contenido dinámico? – Guillaume

+1

@John: está mezclando el análisis con la ejecución. Son dos bestias diferentes. – dirkgently

+1

@Guillaume y dirkgently: es mucho más fácil trabajar con JSON junto con las secuencias de comandos del navegador. Más adecuado para enviar datos al cliente. Me gusta pensar en JSON como JavaScript especializado porque me permitirá emitir comportamiento desde el código del lado del servidor que no es tan ordenado con XML. –

1

Le recomendamos leer JSON: The Fat-Free Alternative to XML. Con JSON puede jugar con devoluciones entre la fuente y el destino de una solicitud y realmente usarlo sin dolor en su código JavaScript existente.

+0

El enlace está roto (al menos para mí ... .) –

+0

@ido: prueba json.org – dirkgently

1

El enlace que se proporciona dirkgently tiene una buena sinopsis de las diferencias (desplácese hacia abajo). Los puntos importantes son:

JSON: más pequeño, puede representar todos los caracteres Unicode (xml no puede en UTF8, al menos, por su propia especificación). También es trivial usarlo en aplicaciones AJAX (debido a la función eval() de javascript), especialmente las funciones más avanzadas como jsonp (respuestas a las devoluciones de llamadas).

XML: Tiene muchas herramientas para facilitar la consulta de su estructura. Desde su más antiguo y más establecido, también tiene más soporte de herramientas en general.

En general, pueden lograr las mismas cosas (puede hacer jsonp a través de xml, solo requeriría analizar sintácticamente la devolución de llamada).

+0

No estoy de acuerdo con su afirmación de que XML no puede representar todos los caracteres Unicode. Simplemente configura la codificación en Unicode ("UTF-16"). Vea cómo: http://www.w3schools.com/xml/xml_encoding.asp – MikeTeeVee

+0

Wow, esto es desde hace un tiempo :). ¿No hay personajes explícitamente prohibidos en XML? Parece que recuerdo cierta superposición entre esos y utf8, no estoy seguro acerca de utf16. He actualizado mi respuesta para reflejar que se trata, al menos, de utf8. –

8

usted tiene en este artículo "The AJAX response: XML, HTML, or JSON?" un amplio debate sobre ese tema:

XML

  • Ventajas
    La ventaja más importante de XML es que es el más formato fácil de leer para otros humanos.
    Una ventaja secundaria es que XML ha existido por bastante tiempo y que muchos desarrolladores ya están acostumbrados.
  • Desventajas
    El JavaScript requerido para insertar los datos en la página HTML es bastante detallado.

JSON

  • Ventajas
    La ventaja más importante es que evita JSON política del mismo origen de JavaScript, si importa el archivo JSON como un nuevo <script> etiqueta. Ver Simon Willison's example para los detalles sangrientos.
    JavaScript no le permite acceder a documentos (ya sean XML o HTML) que provengan de otro servidor. Sin embargo, si importa un archivo JSON como una etiqueta de secuencia de comandos evitará este problema, y ​​cualquier información JSON se puede importar a cualquier sitio web. Depende de los objetivos de su negocio si esto es bueno o malo, pero en este momento es el único formato de datos que permite el acceso sin restricciones.
    Una ventaja secundaria es que los scripts para datos JSON son ligeramente más simples y ligeramente más en línea con el resto del lenguaje JavaScript que los scripts para datos XML.
  • Desventajas
    La desventaja más importante de JSON es que el formato es muy difícil de leer para los humanos, y que, por supuesto, cada coma, cita, y el soporte debe estar exactamente en el lugar correcto. Si bien esto también es cierto para XML, la confusión de JSON con una apariencia complicada, como el}}]} al final del fragmento de datos, puede asustar a los novatos y complicar la depuración.

Según los comentarios, se considera que JSON es más rápido de procesar que XML.

+0

No hay ninguna razón por la que rellenar XML en el DOM tenga que ser difícil, si el diseño en el lado del servidor tiene en cuenta ese comportamiento. Un pequeño trabajo de diseño en el lado del servidor puede reducir en gran medida el esfuerzo del lado del navegador. –

+0

Un punto tan ridículo; JSON es difícil de leer para los humanos ¿Todavía estás seriamente usando esto como respuesta? JSON es increíblemente más fácil que XML para leer para humanos; hecho universal. ¡No puedo creer lo idiota que es esa declaración! El esquema – TheBlackBenzKid

17

Una de las ventajas de XML que no he visto sofar en la discusión es que XML puede tener un esquema. Esto es de gran valor para describir la estructura del XML. Para la estructura de datos simple, JSON y un poco de texto que describe lo que está haciendo está bien. Al trabajar con estructuras de datos más complejas, o cuando el creador y los consumidores de los datos no son el mismo equipo, tener un esquema puede ayudar mucho a la comunicación.

Además, tener un esquema significa que se puede validar sus datos, que puede ser el ahorro cuando se trata de depurar errores complexe vida ...

+0

no siempre se requiere estrictamente, ¡especialmente si se trabaja con NoSQL! –

2

Aunque me gusta JSON y lo recomendaría, creo que no hay diferencia fundamental entre la velocidad de procesamiento óptima. Las diferencias entre bibliotecas y plataformas son más significativas: un buen analizador xml es más rápido que el analizador json malo y viceversa. Por lo general, el rendimiento de los formatos no es un factor importante. Ambos pueden iluminarse rápidamente (Java tiene algunos analizadores buenos para ambos, por ejemplo, probablemente también para otros idiomas).

En cuanto a la compacidad, eso depende del tipo de datos, Json es a menudo un poco más compacto, pero no radicalmente. Excepto si tiene muchas matrices/listas, donde la notación json "{...}" es mucho más compacta que el etiquetado xml (a menos que use espacios en blanco si es posible, como "1 2 3 4").

5

Una ventaja de XML que aún no se ha mencionado es que es posible usar XSLT para extraer datos de un documento XML utilizando expresiones XPath arbitrariamente complejas. No puedo ver una manera de hacer esto en JSON. ¿Cómo encontraría todos los objetos en un documento JSON que contienen un campo "moneda" como un descendiente directo, independientemente de dónde se encuentren los objetos en la estructura? En XML con XSLT/XPath esto es muy fácil.

Sin embargo, hacer esto en el navegador tiene un precio. Te encontrarás con caprichos específicos del navegador, y probablemente sea más lento y requiera más memoria.

+1

* "¿Cómo encontraría todos los objetos en un documento JSON que contienen un campo de" moneda "como un descendiente directo, independientemente de dónde se encuentren los objetos en la estructura?" * De la misma manera que un transformador XSLT, caminando la estructura y encontrándolos. El hecho de que no haya un transformador JSON bien conocido no significa que no pueda haberlo, o que sea menos útil que la versión XML. –

0

Creo que otra ventaja de Json es que no usa los corchetes <> y se puede poner el código html sin mucha confusión.

0

JSON es ligera, AJAX amigable (considerado como subconjunto de Javascript) y fácilmente serializable. XML hacer todo esto, pero después de beber un poco de leche.

Cuestiones relacionadas