XML vs JSON
Enfrentarse con alguien nunca fue tan complicado y dudoso (es que sabemos que si son dignos rivales entre si). Primero presentaremos a los contrincantes
XML,
siglas en inglés de eXtensible Markup Language ('lenguaje de marcas extensible'), es un lenguaje de marcas desarrollado por el World Wide Web Consortium (W3C). Deriva del lenguaje SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML) para estructurar documentos grandes. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil cuando varias aplicaciones se deben comunicar entre sí o integrar información. (Bases de datos Silberschatz).
XML no ha nacido sólo para su aplicación para Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa imaginable.
XML es una tecnología sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil.
JSON,
acrónimo de JavaScript Object Notation, es un formato ligero para el intercambio de datos. JSON es un subconjunto de la notación literal de objetos de JavaScript que no requiere el uso de XML.
La simplicidad de JSON ha dado lugar a la generalización de su uso, especialmente como alternativa a XML en AJAX. Una de las supuestas ventajas de JSON sobre XML como formato de intercambio de datos en este contexto es que es mucho más sencillo escribir un analizador sintáctico (parser) de JSON. En JavaScript, un texto JSON se puede analizar fácilmente usando la función
eval()
, lo cual ha sido fundamental para que JSON haya sido aceptado por parte de la comunidad de desarrolladores AJAX, debido a la ubicuidad de JavaScript en casi cualquier navegador web.
En la práctica, los argumentos a favor de la facilidad de desarrollo de analizadores o del rendimiento de los mismos son poco relevantes, debido a las cuestiones de seguridad que plantea el uso de
eval()
y el auge del procesamiento nativo de XML incorporado en los navegadores modernos. Por esa razón, JSON se emplea habitualmente en entornos donde el tamaño del flujo de datos entre cliente y servidor es de vital importancia (de aquí su uso por Yahoo, Google, etc, que atienden a millones de usuarios) cuando la fuente de datos es explícitamente de fiar y donde no es importante el no disponer de procesamiento XSLT para manipular los datos en el cliente.
Si bien es frecuente ver JSON posicionado contra XML, también es frecuente el uso de JSON y XML en la misma aplicación. Por ejemplo, una aplicación de cliente que integra datos de Google Maps con datos meteorológicos en SOAP hacen necesario soportar ambos formatos.
Cada vez hay más soporte de JSON mediante el uso de paquetes escritos por terceras partes. La lista de lenguajes soportados incluye ActionScript, C, C++, C#, ColdFusion, Common Lisp, Delphi, E, Eiffel, Java, JavaScript, ML, Objective-C,Objective CAML, Perl, PHP, Python, Rebol, Ruby, Lua y Visual FoxPro.
En diciembre de 2005 Yahoo! comenzó a dar soporte opcional de JSON en algunos de sus servicios web.
El término JSON está altamente difundido en los medios de programación, sin embargo, es un término mal descrito ya que en realidad es solo una parte de la definición del estándar ECMA-262 en que está basado Javascript. De ahí que ni Yahoo, ni Google emplean JSON, sino LJS. Una de las cualidades intrínsecas de Javascript denominada LJS (Literal Javascript) facilita el flujo de datos e incluso de funciones, para la cual no requiere la función
eval()
si son datos los que se transfieren como en el caso de XML. Todo lo referente a transferencia de datos en todos sus tipos, incluyendo arrays, booleans, integers, etc. no requieren de la función eval()
, y es precisamente en eso en donde supera por mucho JavaScript al XML, si se utiliza el LJS y no la incorrecta definición de JSON.El desarrollo de nuestro proyecto nos permitió identificar y entender mejor la teoría y como cunclusion podemos decir los siguiente:
- Si mi fuente datos es un webservice, pues lo mejor es usar xml, si mi fuente de datos es una matriz de php, json.
- XML es un lenguaje de representación de datos y para eso debe emplearse, pero cuando se trabaja con AJAX la agilidad es la regla, y sin duda alguna parsear en php una estructura JSON es MUCHO más rápido que una estructura XML (más aún con las funciones json_encode y json_decode incluidas en el core de PHP desde la versión 5.2.0), y ni hablar del manejo de estructuras JSON en Javascript.... mi recomendación personal:
- JSON cuando estas entablando comunicación con AJAX, y XML si necesitas implementar un servicio web, hacer feeds, o cualquiera de la demás aplicaciones comunes de XML.
- JSON su facil interpretación, la transferencia de información (en Kb) es mucho mas pequeña que recibir XML.
- XML goza de mayor soporte y ofrece muchas más herramientas de desarrollo. Hay muchos analizadores JSON en el lado del servidor, existiendo al menos un analizador para la mayoría de los entornos..
- XML, es un lenguaje de intercambio de información estructurada desarrollado por la W3C, con la proposición de ser un estandard entre diferentes plataformas, desde bases de datos, editores de texto,…Es una tecnología sencilla y fácil de entender, además se aplica un razonamiento lógico a su estructura.
Fuentes
http://es.wikipedia.org/wiki/Extensible_Markup_Language
http://es.wikipedia.org/wiki/JSON
"JSON su facil interpretación, la transferencia de información (en Kb) es mucho mas pequeña que recibir XML."
ResponderBorrarEsto no es muy cierto. He probado varios casos de archivos xml y json y los xml siempre son mas pequeños.
Aqui tienes una pagina para que hagas las pruebas. http://www.freeformatter.com/
Este comentario ha sido eliminado por el autor.
BorrarEste comentario ha sido eliminado por el autor.
BorrarEste comentario ha sido eliminado por el autor.
BorrarAnte los mismos datos el XML siempre ocupará mas que un JSON. Ya que el XML usa más caracteres para las etiquetas de apertura y cierre
BorrarEjemplo:
JSON: {"Datos":{"Nombre":"Miguel"}}
XML: <xml><Datos><Nombre>Miguel</Nombre></Datos></xml>