2009-10-26 12 views
5

Estoy tratando de persistir y recuperar una gran cantidad de pares clave-valor tipo de datos a través del cable. ¿Es apropiado para mí usar JSON para este propósito contra XML?JSON en aplicaciones que no son Javascript

¿Se utiliza JSON en aplicaciones que no son de Javascript?

¿Existen ventajas al usar JSON para este propósito sobre el viejo XML?

Respuesta

14

JSON está bien para este uso, y será más compacto que XML. (Lo estamos usando extensamente en una aplicación que no es Javascript y les permitimos a los consumidores de nuestros servicios web REST especificar si desean los datos en XML, JSON o incluso representaciones XHTML.)

Actualización: Donde el ancho de banda es preocupación, probablemente pueda obtener una compresión del 50-70% mediante la codificación/decodificación GZIP de su XML o JSON. Ver GZipStream.

+0

Para que quede claro, JSON y XML tienen sus propias fortalezas y debilidades Cosas como XSL son geniales, pero hay mucho trabajo por hacer. No son "lo mismo" (estoy haciendo esta parada para ser vocal, sé que muchas personas no entienden lo que XML dice y dicen 'hey, JSON es más fácil') – Incognito

4

Encuentro JSON menos detallado que XML y hay una muy buena base de datos en desarrollo llamada CouchDB que le permite almacenar/buscar documentos JSON directamente.

2

Por supuesto, de hecho JSON es mucho mejor que la de XML, por las siguientes razones:

  • APIs para la lectura/escritura son mucho (mucho, mucho) más simple.
    • Recuperar valores es tan simple como leer claves de un diccionario.
  • Es menos detallado, más fácil de leer por simples mortales.
    • Lo que también significa que los datos grandes ocupan menos espacio y menos tiempo para analizar.
+0

En general, la gente debería usar JSON y Paquetes XML para leer (analizar) y escribir. Los nuevos lenguajes de programación tienen soporte incorporado (vea @Michael Dillon). –

+0

Nunca tuve la intención de insinuar que uno debería escribir su propio analizador json, aunque esa no es una muy mala idea. – hasen

+0

JSON no siempre es mejor que XML, dependiendo de para qué lo necesite. Si quiero hacer más procesamiento en el archivo, XML es mejor, pero si he terminado con el procesamiento y me preparo para mostrarlo, entonces JSON es genial. –

6

Debido JSON es ampliamente utilizado por los servidores de aplicaciones de Internet para comunicarse con el Javascript en su navegador (AJAX) hay un montón de bibliotecas de codificación/decodificación JSON para todos los idiomas que se pueden imaginar. Por ejemplo, Python tiene 6 implementaciones diferentes para elegir.

La principal ventaja de utilizar JSON para una "gran cantidad" de datos es que el tiempo de análisis para decodificar los datos es bastante menor que el análisis de XML. Ahora es posible que sus pares clave-valor sean lo suficientemente simples para que el tiempo de análisis no haga la diferencia, pero si los valores tienen algún tipo de objeto compuesto en ellos, entonces JSON será más rápido.

-3

IMO, si va a persistir en las cosas y desea tener la posibilidad de actualizar la aplicación (que es prácticamente siempre el caso), debe crear su código de serialización manualmente y crear un formato de archivo documentado. De lo contrario, estás en grandes problemas en algún momento.

2

Acepto los otros con respecto a la usabilidad de JSON, pero con una advertencia: JSON no le permite proporcionar información adicional sobre los datos. Si todo lo que quiere usar son pares nombre-valor, donde todos los valores son cadenas, JSON está bien.

OK, alguien probablemente me acaba de votar, porque el JSON spec diferencia entre cadenas, números, booleanos y matrices. Pero mi respuesta a eso es: ¿qué tipo de número estás recibiendo? ¿Un entero de 32 bits o un punto flotante de mil dígitos?

XML, en comparación, le permite almacenar metadatos en los atributos.Por ejemplo, el atributo xsi:type, según lo definido por el Esquema XML. Ambos lados todavía tienen que ponerse de acuerdo sobre qué significan los atributos, por supuesto, pero hay muchos casos en los que los metadatos son importantes.

+0

También puede almacenar metadatos en JSON. Así como hay un Esquema XML, hay un [Esquema JSON] (http://json-schema.org/). Además, los números en JavaScript como dobles firmados de 64 bits. –

+0

@Elijah - (1) Un esquema - ya sea XML o JSON - es externo a los datos, por lo que no está proporcionando metadatos * en * el JSON. (2) La especificación JSON no dice absolutamente nada sobre el rango de un valor numérico, y el OP preguntó acerca de los usos fuera de JavaScript, por lo que su punto sobre los números de JavaScript es discutible. – kdgregory

+0

XSL-FO. Eso es todo. – Incognito

2

Si es lo mejor para usted dependerá de sus prioridades, como la velocidad o la flexibilidad.

Había movido una aplicación C# para usar JSON porque la velocidad era el problema más importante para mí. Yo serializaría los datos yo mismo en el servidor y eliminaría cualquier cosa redundante, como el nombre de cada propiedad para acelerar mi transferencia, y encontré ese momento para enviar una solicitud al servidor, obtener la respuesta y el proceso fue más rápido con JSON que usar un servicio web o devolver XML.

Para deserializar, desde C#, tiene varias opciones en http://json.org.

Por lo tanto, antes de decidirse a realizar el cambio, debe realizar algunas pruebas de unidad y obtener algunos números, realizando el mismo cliente -> servidor -> cliente unas 100 veces para obtener mejores resultados.

Debería tener todas las pruebas en la misma clase de prueba para que las pruebas puedan ejecutarse directamente, para reducir la posibilidad de que la carga del servidor salga a la luz.

Si necesita la flexibilidad de ordenar o procesar de otras maneras, como usar XML LINQ, entonces puede convertir la información a una lista y usar LINQ, pero, de nuevo, es posible que desee agregar pruebas para ver qué el impacto de esto sería, en su aplicación.

Básicamente, creo que si tiene tiempo, antes de hacer cualquier cambio arquitectónico pruebe primero, y luego decida si hacer el cambio tiene sentido, basado en los números.

0

Es más compacto que XML y más rápido de analizar en algunos casos. Entonces normalmente lo prefiero.

Por otro lado, XML resuelve algunos problemas de especificación proporcionando soluciones (por ejemplo, codificaciones).

Sin embargo, solo puedo escribir en mi especificación "Solo debe usar UTF-8" y luego se resuelve el problema de las especificaciones de codificación.

Básicamente, JSON se puede usar si necesita una clave/valor simple o estructura de clave/valor/lista anidada, y desea que los problemas comunes de escape y delimitación resuelvan para usted, con muchos analizadores disponibles.

que escribió al menos un protocolo utilizando JSON, y los usuarios de los que nunca se quejó sobre el uso de JSON en lugar de XML, a pesar de estar en Microsoft.NET :)

Cuestiones relacionadas