Получить файл CSV с URL-адреса и преобразовать в массив JSON - PullRequest
0 голосов
/ 07 мая 2020

Мне нужно получить данные из файла csv, размещенного на URL-адресе, и преобразовать его в массив json. До сих пор я использую это.

    import request from "request-promise";
    import encode from "nodejs-base64-encode";

    let url = 'https://example.com/filename.csv';

    function conversion(url) {
        return request.get(url, {encoding: null})
        .then( function (res) {
            //var base64File = encode.encode(res, 'base64');
            //how to convert the received data to json
        });
    }

Я попытался сначала преобразовать в base64, а затем декодировать строку, но это просто дает мне строку, как показано ниже.

name,value,email
jason,23,email@email.com
jeremy,45,email@email.com
nigel,23,email@email.com
jason,23,email@email.com

Мне это нужно как массив json.

Ответы [ 3 ]

0 голосов
/ 07 мая 2020

Вы можете включить такой пакет, как csvto json, чтобы выполнить это преобразование за вас.

/** csv file
a,b,c
1,2,3
4,5,6
*/
const csvFilePath='<path to csv file>'
const csv=require('csvtojson')
csv()
.fromFile(csvFilePath)
.then((jsonObj)=>{
    console.log(jsonObj);
    /**
     * [
     *  {a:"1", b:"2", c:"3"},
     *  {a:"4", b:"5". c:"6"}
     * ]
     */ 
})

// Async / await usage
const jsonArray=await csv().fromFile(csvFilePath);
0 голосов
/ 07 мая 2020

Разделите строку на \r\n, чтобы получить массив строк. Используйте массив .map in, чтобы превратить его в массив объектов.

Вот пример:

var newArray = decodedString.split('\r\n').slice(1)map(row => {
    var temp = row.split(',')
    return {
             name: temp[0],
             value: temp[1],
             email: temp[2]
        }
})

Надеюсь, это поможет :)

0 голосов
/ 07 мая 2020

Вы на полпути.

Вам просто нужно:

  1. разбить строку на конец строки \n. Вы получаете массив строк, каждая из которых представляет строку в вашем CSV-файле.
  2. разделите каждую строку на ,.

И в вашем случае не забудьте игнорировать первую строку (заголовок).

Отметьте это выход статьи:

https://medium.com/@sanderdebr / convert-csv-to-a-2d-array-of-objects-94d43c56b12d

...