Как преобразовать csv в json с помощью npm csvtojson и игнорировать первую строку в csv?

У меня есть csv как таковой:

this is the first column, this is the 2nd,
firstVal,                 secondVal
david,                    baseball
jon,                      soccer

Я хочу преобразовать это в:

[{firstVal:david, secondVal:baseball},{firstVal:jon,secondVal:soccer}]

Моя первая строка в моем csv - это метаданные (в основном просто описание фактических заголовков столбцов - firstVal и secondVal), которые я не хочу включать в json. Я пробовал:

csvtojson({noheader: true}).fromFile(csvFilePath)//...

но это, похоже, не работает. Как я могу выполнить это преобразование, игнорируя первую строку?


person yalpsid eman    schedule 06.09.2019    source источник
comment
Не могли бы вы прояснить свой пример csv? this is the first column и this is the 2nd ваши собственные аннотации или значения первой строки? Нужно ли рассматривать проблему firstVal и secondVal как заголовки, несмотря на то, что она находится во второй строке? Какой результат вы на самом деле получаете в настоящий момент?   -  person Mickey    schedule 06.09.2019


Ответы (1)


Моя первая строка в моем CSV - это метаданные

Тогда проблема в вашем CSV. Что нормально. Вы все еще можете использовать его, но вы не можете ожидать, что в библиотеке есть инструменты, которые вам понадобятся для этого странного варианта использования.

Я думаю, что наиболее разумно читать содержимое csv как строку и удалять первую строку, прежде чем передавать ее в csvtojson. Для этого я позаимствую у этот ответ:

csvStr = csvStr.substring(csvStr.indexOf("\n") + 1);

Затем вы передаете это csvtojson:

csv().fromString(csvStr)
person CoryCoolguy    schedule 06.09.2019
comment
Хотя принято (необязательно) рассматривать первую строку как заголовки столбцов, это не обязательно - формальной спецификации CSV нет, хотя RFC-4180 был создан для кодификации существующей практики. Программы для работы с электронными таблицами без проблем загрузят образец OP; CSV действителен, если он нестандартный. В любом случае это хороший ответ. - person Stephen P; 06.09.2019
comment
Я понимаю, что csv - это очень свободный стандарт. Первая строка будет либо заголовком, либо просто данными. Я никогда не слышал, чтобы CSV использовал первую строку для метаданных. Это вещь? - person CoryCoolguy; 06.09.2019
comment
CSV - это очень общий формат, который не привязан к электронным таблицам, хотя в этом его наибольшее применение. CSV имеет правила цитирования и экранирования, но может использоваться для чего угодно, и программа должна интерпретировать значение, если оно правильно сформировано. Подумайте о файле значений, разделенных табуляцией (TSV), с которым не связаны типичные соглашения; действителен он или недействителен? Что определяет действительность? ... У OP есть инструмент, который, как правило, ожидает, что есть ровно ноль или одна строка заголовка, поэтому приходится иметь дело с дополнительной строкой, но, тем не менее, сам CSV OP хорошо сформирован. - person Stephen P; 06.09.2019
comment
И я согласен с этим. Он может быть проанализирован, но без модификации будет проанализирован только нежелательным образом. - person CoryCoolguy; 06.09.2019
comment
Что такое csvStr? Есть только csv файл. Как вы конвертируете файл в строку? - person yalpsid eman; 06.09.2019
comment
@yalpsideman csvStr - это просто переменная. Назовите его как хотите и поместите в него содержимое csvFilePath. Что касается фактического чтения файла, я бы рекомендовал вам использовать библиотеку fs, предоставленную node: fs.readFile. - person CoryCoolguy; 06.09.2019