Mit Sicherheit nicht.
CSV ist ein Tabellenformat, das Datensätzen oder anderen Tabellendaten sehr gut zugeordnet werden kann. Es sind jedoch nicht alle Daten tabellarisch! Im Allgemeinen möchten wir Objektgraphen serialisieren . Dies kann in folgenden Fällen schwierig sein:
- Zirkelverweise
- geteilte Untergraphen (zB zwei Objekte, die dasselbe Objekt wie ein Mitglied enthalten)
- Objekte unterschiedlicher Typen, die in dasselbe Dokument serialisiert werden sollen
Wir möchten weiterhin in der Lage sein, die Objekte zuverlässig aus unserem Speicherformat zu deserialisieren.
XML
Ist in erster Linie eine erweiterbare Auszeichnungssprache . Es kann mit einem Schuhanzieher versehen werden, um auch allgemeine Datenstrukturen zu speichern. Die Sprachunterstützung für IDs bedeutet, dass komplexe Diagramme erstellt werden können, obwohl dies am besten für Bäume verwendet wird. Ein Dokument kann anhand einer Spezifikation auf Richtigkeit geprüft werden. Es gibt verschiedene Probleme mit diesem Format, die es unpraktisch machen können, wie zum Beispiel die extreme Ausführlichkeit.
JSON
Ist in erster Linie eine Art und Weise einfaches Objekt zu speichern Bäume . Es gibt keine Unterstützung für allgemeine Grafiken. JSON hat kein Konzept von Typ über Primitiven Zeichenfolge , integer , float , boolean , null und die Auflistungstypen Array und Objekt .
YAML
Am einfachsten als Erweiterung von JSON zu verstehen. Verfügt über Aliase , mit denen Objektgraphen beliebiger Komplexität erstellt werden können. Verfügt über ein Konzept von Metadaten wie Tags , die für die ordnungsgemäße Typisierung verwendet werden können.
CSV
Hat nichts außer einem einzigen Tisch. Wenn wir Objektdiagramme speichern möchten, müssten wir ein Schema wie das folgende verwenden
#ID,Type,Field1,Field2,...,FieldN
1,String,foo
2,String,bar
3,Array<String>,1,2
Es gibt viele CSV-Dialekte, bei denen Trennzeichen, Zeilenendezeichen, Anführungszeichen, Escapezeichen und viele andere Probleme nicht zutreffen, weshalb sie für allgemeine (binäre) Daten ungeeignet sind. All dies erschwert die Verarbeitung von CSV-Daten.
Grundsätzlich sind einfache Dinge mit CSV schwierig oder unmöglich, wenn es als allgemeines Serialisierungsformat verwendet wird.
Diese Kritik trifft nicht zu, wenn damit wirklich tabellarische Daten wie Arbeitszeitnachweise oder Messreihen gespeichert werden. Hier ist CSV (häufig in der Variante mit durch Tabulatoren getrennten Werten) in der Regel kompakter und benutzerfreundlicher als die anderen Datenformate.