Contenido

JSON vs XML: Empieza el debate

5 Ene

+ 9

XML, es un lenguaje de intercambio de información estructurada desarrollado por la W3C, con la poposició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.

<menu id="file" value="File">
  <popup>
    <menuitem value="New" onclick="CreateNewDoc()" />
    <menuitem value="Open" onclick="OpenDoc()" />
    <menuitem value="Close" onclick="CloseDoc()" />
  </popup>
</menu>

Por otro lado JSON está pegando fuerte en la programación web debido a las ventajas que ofrece sobre el XML.

JSON es un subconjunto de la notación literal de objetos de Javascript pero no requiere el uso de Javascript.

A simple vista, la facilidad que conlleva el uso de JSON en comparación con la laboriosa tarea de recorrer un XML, por ejemplo para trabajar con Ajax, es uno de los motivos por los cuales los desarrolladores están volcando sus esfuerzos en esta herramienta de intercambio de datos.

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

Como problemas, los desarrolladores experimentados encuentran que la utilización de eval() para para analizar JSON es algo delicado y puede atentar la seguridad del sitio.

var http_request = new XMLHttpRequest();
 var url = "http://example.net/jsondata.php";
 // Esta URL debería devolver datos JSON

 // Descarga los datos JSON del servidor.
 http_request.onreadystatechange = handle_json;
 http_request.open("GET", url, true);
 http_request.send(null);

function handle_json() {
  if (http_request.readyState == 4) {
    if (http_request.status == 200) {
      var json_data = http_request.responseText;
      var the_object = eval("(" + json_data + ")");
    } else {
      alert("Ha habido un problema con la URL.");
    }
    http_request = null;
  }
}

Por estos motivos y algunos más, se plantean debates y se intenta decidir cual es la forma correcta de intercambiar información.

Diría que es un poco de vagos, usar un formato que es concreto al lenguaje (js), solo por no querer parsear un XML.

Se perdería la ventaja de un formato universal e independiente. Y aún más, se perdería toda las posibilidades del xml (xpath, xslt, xschemas, x*).

#1 Hombre, por ejemplo sitios como del.icio.us, Yahoo! y más usan jSON en lugar de XML. ¿por que?

Principalmente por que es más fácil de tratar y mientras más fácil se lo pongas a la gente más se va a usar.

Con JSON no tenes la limitación de obtener el archivo desde el mismo dominio que impone AJAX.
Y no hace falta arriesgarte al eval() cuando tenes analizadores especificos para JSON.

Tambien hay que evaluar la tecnologia a usar, si utilizamos microsoft conviene xml ya que el tratarlo es mucho mas simple (xpath.. etc), en este momento como estoy con php me conviene mas JSON.
en http://es.wikipedia.org/wiki/JSON hay una buena diferencia entre JSON y XML
saludos

Yo pienso que JSON sera la nueva tecnología para AJAX, mientras que XML seguira siendo el formato de texto universal, para web services,etc.

Intento usar la lib json
pero no funcionan los acentos y eñes el resultado del encode del json ya me devuelve mal los datos.
mucho busque la solución pero no la encuentro
ej:Asociacin00200053agrada Familia de Burdeos
ya no se q hacer…

json.js tiene el metodo “parse” para evitar problemas de seguridad que existen con eval

JSON es una maravilla, por su velocidad de carga, por la facilidad para crearlos desde PHP, por lo bien integrado que está con AJAX y entornos como EXTJS, por las posibilidades que ofrece su versión “geográfica” GEOJSON junto con Openlayers para independizarnos de servidores de mapas ortopédicos. Señoras y señores …. la que se avecina…..

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.


Cerrar
Enviar por Correo