2008-09-26 3 views
22

Wir planen derzeit eine neue API für eine Anwendung und debattieren die 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.Was sind die relativen Vorzüge von CSV, JSON und XML für eine REST-API?

Grundsätzlich ist der Kern des Arguments ist, ob wir CSV überhaupt wegen der fehlenden Rekursion unterstützen sollen (das heißt mit einem Dokument, das multiple authors und multiple references hat, würde erfordern multiple API calls all information zu erhalten).

In den Erfahrungen, die Sie möglicherweise gehabt haben, wenn Sie mit Informationen von Web APIs gearbeitet haben und Dinge, die wir tun können, um den Entwicklern, die mit unserer API arbeiten, das Leben zu erleichtern.


Unsere Entscheidung:

Wir haben beschlossen, XML und JSON aufgrund der Schwierigkeiten bei der Rekursion in CSV mehrere Anrufe für eine einzelne logische Operation benötigen zur Verfügung zu stellen. JSON hat keinen Parser in Qt und Protocol Buffers scheint keine non-alpha PHP Implementierung zu haben, so dass sie auch im Moment aus sind, aber wahrscheinlich wird schließlich unterstützt.

+0

Die Schönheit von CSV ist in seiner Einfachheit. – Ambo100

Antwort

18

CSV ist richtig. JSON ist eine kompaktere Objektnotation als XML. Wenn Sie also nach hohen Volumina suchen, hat das den Vorteil. XML hat eine größere Marktdurchdringung (ich liebe diesen Ausdruck) und wird von allen Programmiersprachen und deren Kern-Frameworks unterstützt. JSON kommt dorthin (wenn nicht schon da).

Persönlich mag ich die Klammern. Ich würde wetten, dass mehr Entwickler mit der Arbeit mit xml-Daten vertraut sind als mit json.

2

CSV hat so viele Probleme wie ein komplexes Datenmodell, das ich nicht verwenden würde. XML ist sehr flexibel und einfach zu programmieren - Clients haben kein Problem Codieren von XML-Generatoren und Parsern, Sie können sogar Sample-Parser mit SAX bereitstellen.

Haben Sie das Netzwerkdatenformat von Google ausgecheckt? Es heißt Protokollpuffer. Ich weiß nicht, ob es für einen REST-Service nützlich ist, da es auch die gesamte HTTP-Ebene überspringt.

2

XML kann manchmal ein bisschen schwergewichtig sein. JSON ist jedoch ziemlich gut, hat eine gute Sprachunterstützung und JSON-Daten können direkt in native Objekte auf vielen Spielformen übersetzt werden.

23

Vorteile:

  • XML - leicht interpretiert - Viele Bibliotheken sind Devs mit ihm vertraut, XSLT, kann easiily sowohl vom Client und Server (XSD, DTD),
  • JSON Hierarchical Data Validierte werden auf Client-Seite, kompakte Notation, Hierarchische Daten
  • CSV - Öffnet in Excel (?
  • )

Nachteile:

  • XML - Bloated, härter in JavaScript als JSON
  • JSON zu interpretieren - verwendet Wenn unsachgemäß eine Sicherheitslücke darstellen kann (nicht eval), nicht alle Sprachen Bibliotheken haben, um es zu interpretieren.
  • CSV - Unterstützt keine hierarchischen Daten, Sie wären der einzige, der es macht, es ist viel schwieriger als die meisten Entwickler, gültige CSV-Dateien zu parsen (CSV-Werte können neue Zeilen enthalten, solange sie zwischen Anführungszeichen stehen).

Angesichts der oben genannten würde ich nicht einmal die Unterstützung CSV unterstützen. Der Client kann es aus XML oder JSON generieren, wenn es wirklich benötigt wird.

+0

Sofern Sie keinen JSON-Parser in Ihrer bevorzugten Sprache haben, ist CSV wesentlich einfacher zu analysieren als JSON. –

+2

Es gibt JSON-Parser für eine Vielzahl von Sprachen. Siehe unten auf http://www.json.org/. – mpdaly

1

Ich habe keine Erfahrung mit JSON, CSV funktioniert bis zu einem Punkt, wenn Ihre Daten sehr tabellarisch und gleichmäßig strukturiert sind. XML kann sehr schnell unhandlich werden, besonders wenn Sie kein Werkzeug haben, das die Bindungen zu Ihren Objekten automatisch erstellt.

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

0

Abgesehen von what Allain Lalonde already said, ein weiterer Vorteil von CSV ist, dass es tendenziell kompakter als XML oder sogar JSON ist. Also, wenn Ihre Daten strikt tabellarische, mit einer völlig flachen hyerarchy ist, kann CSV eine richtige Wahl sein. Zusätzliche Nachteile von CSV sind, dass es verschiedene Trennzeichen und Dezimaltrennzeichen verwenden kann, abhängig davon, welches Werkzeug (und sogar Land!) Es erzeugt hat.

Verwandte Themen