Конечно, нет.
CSV - это табличный формат, который очень хорошо отображается на наборы данных или другие табличные данные. Но не все данные являются табличными! В общем, мы хотим сериализовать графы объектов . Это может быть сложно в следующих случаях:
- циркулярные ссылки
- общие подграфы (например, два объекта, каждый из которых содержит один и тот же объект в качестве члена)
- объекты разных типов для сериализации в один и тот же документ
Кроме того, мы хотим иметь возможность надежно десериализовать объекты из нашего формата хранения.
XML
Это прежде всего расширяемый язык разметки . Он также может быть использован для хранения общих структур данных. Языковая поддержка идентификаторов означает, что можно создавать сложные графы, хотя лучше всего их использовать для деревьев. Документ может быть проверен на соответствие спецификации. Существуют различные проблемы с этим форматом, которые могут сделать его непрактичным, например, крайняя детализация.
JSON
Это прежде всего способ хранения простых объектных деревьев . Нет поддержки общих графиков. JSON не имеет понятия о типе, кроме примитивов string , integer , float , boolean , null и массива и объекта типов коллекций .
YAML
Наиболее легко понять как расширение JSON. Имеет понятие псевдонимов, которые позволяют создавать графы объектов произвольной сложности. Имеет понятие метаданных, таких как теги, которые можно использовать для правильной типизации.
CSV
Не имеет ничего, кроме одного стола. Если мы хотим хранить графы объектов, нам нужно будет использовать такую схему, как
#ID,Type,Field1,Field2,...,FieldN
1,String,foo
2,String,bar
3,Array<String>,1,2
Есть много диалектов CSV, которые не согласны с разделителями, разделителями строк, кавычками, escape-символами и многими другими проблемами, которые делают его непригодным для общих (двоичных) данных. Все это затрудняет обработку данных в формате CSV.
Таким образом, в основном, простые вещи сложны или невозможны с CSV при использовании его в качестве общего формата сериализации.
Эта критика неприменима при использовании ее для хранения действительно табличных данных, таких как табели учета рабочего времени или серии измерений. Здесь CSV (часто в варианте значений, разделенных табуляцией) обычно более компактен и проще в использовании, чем другие форматы данных.