¿Podemos reemplazar el XML por JSON por completo? [cerrado]

77

Estoy seguro de que muchos desarrolladores están familiarizados con XML y JSON , y han usado ambos. Por lo tanto, no tiene sentido explicar qué son y cuál es su propósito, incluso en breve.

Si intentamos mapear sus conceptos, podemos decir (corríjame si me equivoco):

  1. Las etiquetas XML son equivalentes a JSON {}
  2. Los atributos XML son equivalentes a las propiedades JSON
  3. la colección de etiquetas XML es equivalente a JSON []

Lo único en lo que puedo pensar, que no existe en JSON, es espacios de nombres XML .

La pregunta es, considerando este mapeo y considerando que JSON es mucho más ligero en este mapeo, ¿podemos ver un mundo en el futuro (o al menos en teoría pensar en un mundo) sin XML, pero con JSON haciendo todo lo que hace XML? ¿Podemos usar JSON en cualquier lugar donde se use XML?

PD: Tenga en cuenta que he visto esto pregunta. Es algo completamente diferente de lo que estoy preguntando aquí. Por lo tanto, no mencione duplicado .

    
pregunta Saeed Neamati 16.09.2011 - 12:33

12 respuestas

153

Lo que le da a XML su poder y gran parte de su complejidad es el contenido mixto. Cosas como esta:

<p>A <b>fine</b> mess we're in!</p>

Ni siquiera intentes hacer eso en JSON, o manipularlo en lenguajes de programación convencionales. No fueron diseñados para el trabajo.

Este tipo de pregunta generalmente proviene de personas que olvidan que la M en XML es sinónimo de marcado. Es una forma de tomar texto sin formato y agregar marcas para crear texto estructurado. También es muy útil para los datos pasados de moda, pero no es para eso para lo que fue diseñado ni para dónde se encuentran sus principales fortalezas. Hay muchas formas de manejar datos simples, y JSON es una de ellas.

    
respondido por el Michael Kay 16.09.2011 - 14:04
31

La principal diferencia, creo, está en el hecho de que XML está diseñado para explicarse por sí mismo con sus dtd y todo.

Con JSON, debes asumir mucho sobre los datos que estás recibiendo.

    
respondido por el Maarten van Leunen 16.09.2011 - 12:53
20

Una traducción literal a JSON es a menudo menos sucinta y menos clara. Considera:

<foo>
   <x:bar x:prop1="g">
      <quuz />
   </bar>
</foo>

La representación JSON más efectiva que he visto de esto:

{"localName":"foo",
 "children": // you need to have a special array to hold all children
 [
    {"localName": "bar",
     "namespace": "x"
        // once again, to ensure that there are no collisions,
        // attributes should be brought out into their own JSON structure 
        "attributes":[
            {"localName":"prop1",
             "namespace":"x",
             "value":"g"}
        ],
         "children":[
             {"name":"quux"}
         ]
     }
 ]}

Ahora, imagina que para un archivo XML completo. No estoy diciendo que JSON no tenga su lugar, pero no se debe descartar XML.

    
respondido por el cwallenpoole 16.09.2011 - 13:10
14

JSON y XML son ambas formas de formatear datos. Ambos son capaces de hacerlo perfectamente bien, entonces, ¿JSON puede hacer todo lo que hace XML? Sí.

Pero ..... Una pregunta más relevante podría no ser qué puede hacer XML / JSON, sino qué puede hacer con XML / JSON.

Hay varias cosas que puede hacer con XML que no creo que pueda hacer con JSON, como traducir con XLST, buscar con XPath y validar con esquemas. Todo muy, muy útil.

    
respondido por el Qwerky 16.09.2011 - 13:04
11

Hay una gran cantidad de funciones que utilizan XSLT que pueden no ser posibles con JSON. Por lo tanto, si no son funcionalmente equivalentes, no podrían reemplazarse entre sí.

    
respondido por el StuperUser 16.09.2011 - 12:50
7

JSON es bastante nuevo y los sistemas heredados no lo admiten. La actualización de sistemas heredados es costosa e introduce errores. JSON no reemplazará XML en ningún momento en un futuro próximo.

    
respondido por el Tom Squires 16.09.2011 - 12:39
7

El hecho es que tendremos que vivir con ambos por mucho tiempo, y ser un fanático JSON es "considerado perjudicial".

    
respondido por el Scott C Wilson 16.09.2011 - 14:42
6

Yo diría que cwallenpoole hace un excelente punto. Si bien la mayoría de XML puede ser traducido a JSON, si hacerlo es mejor, es un punto aparte.

JSON se presta a las estructuras de datos al menos tan bien como XML y probablemente mejor, pero XML se lee mucho más naturalmente que JSON al marcar documentos de texto, donde las etiquetas se usan dentro de un flujo más grande de texto en lugar de simplemente como una forma de delimitar una jerarquía de campos.

Si bien HTML 5 puede tener su propio analizador, eso todavía deja aplicaciones como DocBook.

    
respondido por el ssokolow 16.09.2011 - 13:21
6

Depende del dominio. En cuanto a servicios web? Absolutamente. Es absolutamente vergonzoso que los proveedores sigan presionando SOAP en sus clientes. REST + JSON todo el camino.

¿Ahora, cuando se habla de datos complejos y estructurados con información de estilo como Docbook u otra implementación? Ese es un dominio apropiado para XML.

    
respondido por el Jason Lewis 16.09.2011 - 17:46
3

Se pone feo cuando intentas modelar estos dos objetos en JSON:

<customer><name>John Doe</name></customer>
<employee><name>John Doe</name</employee>

Usando JSON como se usa en el 99% de los casos, uno se pierde con:

{ name: "John Doe" } 

Y ahora tienes que agregar algunas metaestructuras y toda la belleza de JSON se ha ido mientras te quedas con las desventajas.

    
respondido por el Michal Till 19.09.2011 - 00:07
3

¿Por qué limitarte a JSON cuando YAML es un super conjunto y mucho más expresivo y, por lo tanto, más poderoso que XML o JSON?

Dicho esto, si utiliza los marcos de serialización correctos, debería poder serializar y deserializar todos los formatos mencionados anteriormente con un par de líneas de código simples.

    
respondido por el Jarrod Roberson 19.09.2011 - 03:10
3

No sé si existe tal instalación para JSON, pero en .NET al menos puede validar XML contra un esquema determinado. Esa es una valiosa ventaja de XML en mis ojos.

    
respondido por el Grant Palin 20.09.2011 - 05:37

Lea otras preguntas en las etiquetas