Frage

Wir planen gerade ein neues API für eine Bewerbung und Diskussion der verschiedenen Datenformate, die wir für den Austausch verwenden sollten.Es gibt eine ziemlich intensive Diskussion über die relativen Vorzüge von CSV, JSON Und XML.

Im Grunde geht es bei der Debatte darum, ob wir unterstützen sollten CSV überhaupt wegen der fehlenden Rekursion (d.h.ein Dokument haben, das hat multiple authors Und multiple references würde brauchen multiple API calls um alles zu erhalten information).

In den Erfahrungen, die Sie möglicherweise bei der Arbeit mit Informationen von gemacht haben Web APIs und Dinge, die wir tun können, um den Entwicklern, die mit uns arbeiten, das Leben zu erleichtern API.


Unsere Entscheidung:

Wir haben uns für die Bereitstellung entschieden XML Und JSON aufgrund der Schwierigkeit bei der Rekursion in CSV mehrere Aufrufe für eine einzelne logische Operation erforderlich sind. JSON hat keinen Parser Qt Und Protocol Buffers scheint keine zu haben non-alpha PHP Daher sind sie im Moment ebenfalls nicht verfügbar, werden aber wahrscheinlich irgendwann unterstützt.

War es hilfreich?

Lösung

CSV ist direkt aus. JSON ist eine kompaktes Objekt Notation als XML, wenn Sie also für hohe Volumina hat es den Vorteil suchen. XML hat breitere Marktdurchdringung (Ich liebe diesen Satz) und wird von allen Programmiersprachen und deren Kern-Frameworks unterstützt. JSON wird immer dort (wenn nicht bereits vorhanden).

Persönlich mag ich die Klammern. Ich würde mehr Devs sind komfortabel mit der Arbeit mit XML-Daten als mit json wetten.

Andere Tipps

Vorteile:

  • XML – Viele Bibliotheken, Entwickler sind damit vertraut, XSLT, kann sowohl vom Client als auch vom Server leicht validiert werden (XSD, DTD), hierarchische Daten
  • JSON – einfach clientseitig zu interpretieren, kompakte Notation, hierarchische Daten
  • CSV – Öffnet in Excel(?)

Nachteile:

  • XML – Aufgedunsen, in JavaScript schwieriger zu interpretieren als JSON
  • JSON – Bei unsachgemäßer Verwendung kann eine Sicherheitslücke entstehen (verwenden Sie nicht eval). Nicht alle Sprachen verfügen über Bibliotheken, um es zu interpretieren.
  • CSV – Unterstützt keine hierarchischen Daten, Sie wären der Einzige, der das macht, es ist tatsächlich viel schwieriger, als die meisten Entwickler denken, gültige CSV-Dateien zu analysieren (CSV-Werte können neue Zeilen enthalten, solange sie in Anführungszeichen stehen usw.).

Angesichts des oben Gesagten würde ich mir nicht einmal die Mühe machen, CSV zu unterstützen.Der Client kann es entweder aus XML oder JSON generieren, wenn es wirklich benötigt wird.

CSV hat so viele Probleme als ein komplexes Datenmodell, das würde ich es nicht verwenden. XML ist sehr flexibel und einfach zu programmieren mit -. Kunden werden kein Problem haben XML-Codierung Generatoren und Parser, Sie sogar Parser Probe liefern können SAX mit

Haben Sie ausgecheckt Netzwerk-Datenformat von Google? Es Protocol Buffers genannt. Weiß nicht, ob es für einen REST-Dienst jedoch nützlich ist, da es zu, dass ganz HTTP Schicht überspringt.

XML kann ein bisschen Schwergewicht manchmal sein. JSON ist ganz nett, aber hat eine gute Sprachunterstützung und JSON-Daten direkt an native Objekte auf vielen playforms übersetzt werden kann.

Ich habe keine Erfahrung mit JSON, CSV arbeitet bis zu einem Punkt, wenn die Daten sehr tabellarischen sind und gleichmäßig strukturiert. XML kann sehr schnell unhandlich wird, vor allem, wenn Sie nicht über ein Tool, das die Bindungen, um Ihre Objekte automatisch erstellt.

Ich habe dies auch nicht versucht, aber Googles Protocol Buffers sehen wirklich gut, einfaches Format , erstellt automatische Bindungen an C ++, Java und Python implementiert und Serialisierung und Deserialisierung der erstellten Objekte.

Asides von was Allain Lalonde sagte bereits , ein weiterer Vorteil der CSV ist, dass es kompakter zu sein scheint als XML oder sogar JSON. Also, wenn Sie Ihre Daten streng tabellarisch, mit einem völlig flachen hyerarchy kann CSV eine richtige Wahl sein. Zusätzliche Nachteile der CSV ist, dass es verschiedene Trennzeichen und Dezimaltrennzeichen verwenden, Auswuchten, das Werkzeug (und sogar Land!) Erzeugt es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top