Pregunta

Actualmente estamos planeando un nuevo API para una aplicación y estamos debatiendo los distintos formatos de datos que deberíamos usar para el intercambio. Hay una discusión bastante intensa sobre los méritos relativos de CSV , JSON y XML .

Básicamente, el quid del argumento es si deberíamos admitir CSV debido a la falta de recursión ( , es decir, tener un documento que tenga varios autores y multiple references requerirían multiple API API 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 facilitarle la vida a los desarrolladores que trabajan con nuestro API . / p>


Nuestra decisión:

  

Hemos decidido proporcionar XML y JSON debido a la dificultad de la recursión en CSV que requieren múltiples llamadas para una sola operación lógica. JSON no tiene un analizador en Qt y Protocol Buffers no parece tener un PHP no alfa implementación, por lo que también están fuera por el momento, pero probablemente serán compatibles con el tiempo.

¿Fue útil?

Solución

CSV está bien. JSON es una notación de objetos más compacta que XML, por lo que si está buscando grandes volúmenes, tiene la ventaja. XML tiene una mayor penetración en el mercado (me encanta esa frase) y está soportado por todos los lenguajes de programación y sus marcos centrales. JSON está llegando (si no está ya allí).

Personalmente, me gustan los paréntesis. Apostaría a que más desarrolladores se sienten cómodos trabajando con datos xml que con json.

Otros consejos

Ventajas:

  • XML: muchas bibliotecas, los desarrolladores están familiarizados con él, XSLT, pueden ser validados fácilmente 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ícil de interpretar en JavaScript que JSON
  • JSON: si se usa incorrectamente puede representar un agujero de seguridad (no use eval), no todos los idiomas tienen bibliotecas para interpretarlo.
  • CSV: no admite datos jerárquicos, usted sería el único que lo hace, en realidad es mucho más difícil de lo que la mayoría de los desarrolladores piensan en analizar archivos CSV válidos (los valores CSV pueden contener nuevas líneas siempre que estén entre comillas, etc. ).

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

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 los generadores y analizadores XML, incluso puede proporcionar analizadores de muestra utilizando SAX.

¿Ha revisado el formato de datos de red de Google? Se llama Protocol Buffers. No sé si es útil para un servicio REST, sin embargo, ya que omite toda la capa HTTP también.

XML puede ser un poco pesado a veces. Sin embargo, JSON es bastante bueno, tiene buen soporte de lenguaje y los datos JSON se pueden traducir directamente a objetos nativos en muchas formas de juego.

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

Tampoco lo he intentado, pero los búferes de protocolo de Google tienen un formato realmente bueno y sencillo , crea enlaces automáticos a C ++, Java y Python e implementa la serialización y deserialización de los objetos creados.

Además de lo que Allain Lalonde ya dijo , 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 tabulares estrictamente , con una herrería completamente plana, la 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 el país!) La generó.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top