Contenido

JSON vs XML: Empieza el debate

5 ene

+ 10

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.

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.