2008-09-26 11 views
22

Actualmente estamos planificando un nuevo API para una aplicación y para debatir sobre los diversos formatos de datos que debemos usar para el intercambio. Hay una discusión bastante intensa sobre los méritos relativos de CSV, JSON y XML.¿Cuáles son los méritos relativos de CSV, JSON y XML para una API REST?

Básicamente, el quid de la discusión es si debemos apoyar CSV en absoluto debido a la falta de recursividad (es decir, tener un documento que tiene multiple authors y multiple references requeriría multiple API calls para obtener toda la information).

En las experiencias que pueda haber tenido al trabajar con información de Web APIs y las cosas que podemos hacer para facilitar las vidas de los desarrolladores que trabajan con nuestro API.


Nuestra decisión:

Hemos decidido proporcionar XML y JSON debido a la dificultad en la recursividad en CSV necesitan varias llamadas para una sola operación lógica. JSON no tiene un analizador en Qt y Protocol Buffers parece que no tiene una implementación non-alpha PHP por lo que están fuera de momento también, pero probablemente será compatible con el tiempo.

+0

La belleza de CSV es su simplicidad. – Ambo100

Respuesta

18

CSV está fuera. JSON es una notación de objeto más compacta que XML, por lo que si buscas grandes volúmenes tiene la ventaja. XML tiene una mayor penetración en el mercado (me encanta esa frase) y es compatible con todos los lenguajes de programación y sus frameworks principales. JSON está llegando allí (si no está ya allí).

Personalmente, me gustan los soportes. Apuesto a que más desarrolladores se sienten cómodos trabajando con datos xml que con json.

2

CSV tiene tantos problemas como un modelo de datos complejo que no lo usaría. XML es muy flexible y fácil de programar: los clientes no tendrán problemas para codificar generadores y analizadores XML, incluso puede proporcionar analizadores de muestras utilizando SAX.

¿Has verificado el formato de datos de red de Google? Se llama Buffers de Protocolo. No sé si es útil para un servicio REST, sin embargo, también se salta esa capa HTTP completa.

2

XML puede ser un poco pesado a veces. JSON es bastante agradable, sin embargo, tiene un buen soporte de idiomas, y los datos JSON se pueden traducir directamente a objetos nativos en muchas formas de reproducción.

23

Ventajas:

  • XML - Un montón de bibliotecas, Devs están familiarizados con ella, XSLT, se puede easiily Validado por el cliente y el servidor (XSD, DTD), datos jerárquicos
  • JSON - fácil de interpretar en el lado del cliente, notación compacta, Datos jerárquicos
  • CSV - Se abre en Excel (?)

Desventajas:

  • XML - hinchado, más difíciles de interpretar en JavaScript que JSON
  • JSON - Si se utiliza incorrectamente puede plantear un problema de seguridad (no usar eval), no todos los idiomas tener bibliotecas para interpretarlo.
  • CSV - No admite datos jerárquicos, usted sería el único que lo haría, en realidad es mucho más difícil de lo que la mayoría de los desarrolladores piensan analizar archivos csv válidos (los valores CSV pueden contener nuevas líneas siempre que estén entre comillas, etc.)

Dado lo anterior, ni siquiera me molestaría en soportar CSV. El cliente puede generarlo desde XML o JSON si es realmente necesario.

+0

A menos que tenga un analizador JSON en el idioma que elija, entonces CSV es mucho más fácil de analizar que JSON. –

+2

Hay analizadores JSON disponibles para una amplia gama de idiomas. Ver la parte inferior de http://www.json.org/. – mpdaly

1

No tengo ninguna experiencia con JSON, CSV funciona hasta cierto punto cuando sus datos son muy tabulares y están estructurados uniformemente. XML puede volverse difícil de manejar muy rápidamente, especialmente si no tiene una herramienta que crea enlaces a sus objetos automáticamente.

No he probado esto tampoco, pero Google's Protocol Buffers tiene un formato realmente bueno y simple, crea enlaces automáticos a C++, Java y Python e implementa la serialización y deserialización de los objetos creados.

0

Aparte de what Allain Lalonde already said, una ventaja adicional de CSV es que tiende a ser más compacto que XML o incluso JSON. Por lo tanto, si sus datos son estrictamente tabulares, con una jerarquía completamente plana, CSV puede ser una opción correcta. Las desventajas adicionales de CSV es que puede usar diferentes delimitadores y separadores decimales, dependiendo de qué herramienta (¡e incluso país!) Lo generó.

Cuestiones relacionadas