Question

Nous sommes en train de planifier une nouvelle API pour une application et de débattre des différents formats de données que nous devrions utiliser pour l'échange. Il y a une discussion assez intense sur les mérites relatifs de CSV , JSON et XML .

Fondamentalement, le noeud de l’argument est de savoir si nous devons ou non prendre en charge CSV en raison de l’absence de récursivité ( , c’est-à-dire ayant un document comportant plusieurs auteurs et références multiples nécessitent plusieurs appels d'API pour obtenir toutes les informations ).

Les expériences que vous avez pu avoir lors de l'utilisation des informations de API Web et des actions que nous pouvons réaliser pour simplifier la vie des développeurs utilisant notre API .

Notre décision:

  

Nous avons décidé de fournir XML et JSON en raison de la difficulté de récursivité dans CSV nécessitant plusieurs appels pour une seule opération logique. JSON ne dispose pas d'un analyseur dans Qt et Les tampons de protocole ne semblent pas avoir de code non alpha . > mis en œuvre de manière à ce qu’ils soient également disponibles pour le moment, mais qu’ils soient éventuellement pris en charge.

Était-ce utile?

La solution

Le format CSV est juste. JSON est une notation d'objet plus compacte que XML. Par conséquent, si vous recherchez des volumes élevés, vous avez l'avantage. XML a une plus grande pénétration du marché (j'adore cette expression) et est pris en charge par tous les langages de programmation et leurs cadres centraux. JSON est en train d’y arriver (si ce n’est déjà fait).

Personnellement, j'aime bien les crochets. Je parierais que plus de développeurs sont à l'aise pour travailler avec des données XML qu'avec JSON.

Autres conseils

Avantages:

  • XML - Beaucoup de bibliothèques, les développeurs le connaissent bien, XSLT, peut être facilement validé par le client et le serveur (XSD, DTD), données hiérarchiques
  • JSON - interprétation facile côté client, notation compacte, données hiérarchiques
  • CSV - Ouvre dans Excel (?)

Inconvénients:

  • XML - Gonflé, plus difficile à interpréter en JavaScript que JSON
  • JSON - S'il n'est pas utilisé correctement, cela peut créer une faille de sécurité (n'utilisez pas eval). Toutes les langues ne disposent pas de bibliothèques pour l'interpréter.
  • CSV - Ne supporte pas les données hiérarchiques, vous seriez le seul à le faire, il est en réalité beaucoup plus difficile que la plupart des développeurs pensent d’analyser des fichiers csv valides (les valeurs CSV peuvent contenir de nouvelles lignes tant qu’elles sont entre guillemets, etc. ).

Compte tenu de ce qui précède, je ne prendrais même pas la peine de soutenir CSV. Le client peut le générer à partir de XML ou de JSON s'il le souhaite vraiment.

En tant que modèle de données complexe, le CSV pose tellement de problèmes que je ne l'aurais pas utilisé. XML est très flexible et facile à programmer. Les clients n’auront aucun problème à coder les générateurs et les analyseurs syntaxiques XML. Vous pouvez même fournir des exemples d’analyseurs syntaxiques à l’aide de SAX.

Avez-vous vérifié le format de données réseau de Google? C'est ce qu'on appelle des tampons de protocole. Je ne sais pas si cela est utile pour un service REST, car il ignore également cette couche HTTP.

XML peut parfois être un peu lourd. JSON est plutôt agréable, cependant, supporte bien les langues et les données JSON peuvent être traduites directement en objets natifs sur de nombreuses formes de jeu.

Je n'ai aucune expérience de JSON, le format CSV fonctionne jusqu'à un point où vos données sont très tabulaires et structurées de manière uniforme. XML peut devenir très difficile à manier, surtout si vous ne disposez pas d'un outil qui crée automatiquement les liaisons à vos objets.

Je n'ai pas essayé non plus, mais les les tampons de protocole de Google sont vraiment beaux, au format simple. , crée des liaisons automatiques avec C ++, Java et Python et implémente la sérialisation et la désérialisation des objets créés.

Mis à part ce qu'Allain Lalonde a déjà dit , le CSV présente l'avantage supplémentaire d'être plus compact que XML. ou même JSON. Ainsi, si vos données sont strictement , avec une hyerarchy complètement plate, le format CSV peut constituer un choix correct. Les inconvénients du format CSV sont qu’il peut utiliser différents délimiteurs et séparateurs décimaux, en fonction de l’outil (et même du pays!) Qui l’a généré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top