Могу ли я получить читаемый поток, а затем преобразовать его в клиентскую часть JSON? - PullRequest
0 голосов
/ 14 мая 2018

Я надеюсь использовать Google Sheets CSV в качестве источника данных.Я хотел бы получить данные CSV на клиенте, а затем преобразовать в JSON.

Я могу получить CSV, который возвращает ReadableStream.Однако я не уверен, как правильно прочитать этот ответ и преобразовать его в JSON.

Я нашел пакет npm, который должен помочь преобразовать данные CSV в JSON , но снемного времени на работу с потоком.

Пример: https://jsfiddle.net/21jeq1h5/3/

Может ли кто-нибудь указать мне правильное направление использования ReadableStream?

1 Ответ

0 голосов
/ 14 мая 2018

Поскольку CSV - это просто текст, решение заключается в использовании метода response.text() API fetch().

https://developer.mozilla.org/en-US/docs/Web/API/Body/text

Как только текст на борту, это так же просто, как разбор CSV из файла. Если вы хотите, чтобы объекты выводились, обязательно, чтобы заголовки были включены в CSV (который у вас).

Я включил фрагмент кода ниже. Он не будет работать на SO, потому что SO устанавливает нулевое значение источника в запросах AJAX. Поэтому я также включил ссылку на работающее решение codepen.

fetch('https://docs.google.com/spreadsheets/d/e/KEY&single=true&output=csv')
  .then(response => response.text())
  .then(transform);

function transform(str) {
  let data = str.split('\n').map(i=>i.split(','));
  let headers = data.shift();
  let output = data.map(d=>{obj = {};headers.map((h,i)=>obj[headers[i]] = d[i]);return obj;});
  console.log(output);
}

ручка

https://codepen.io/randycasburn/pen/xjzzvW?editors=0012

Редактировать

Я должен добавить, что если вы действительно хотите это в строке JSON (по вашему вопросу), вы можете запустить

json = JSON.stringify(output);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...