我可以获取可读流然后转换为 JSON 客户端吗?



我希望使用Google Sheets CSV作为数据源。我想在客户端上获取 CSV 数据,然后转换为 JSON。

我能够获取 CSV,它返回一个ReadableStream.但是,我不确定如何正确读取该响应并转换为 JSON。

我找到了一个 npm 包,它应该有助于将 CSV 数据转换为 JSON,但需要一点时间来处理流。

示例:https://jsfiddle.net/21jeq1h5/3/

谁能指出我使用ReadableStream的正确方向?

由于CSV只是文本,因此解决方案是使用fetch()API的response.text()方法。

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

载入文本后,只需从文件中解析 CSV 即可。如果您希望对象作为输出,则必须将标头包含在 CSV 中(您的是(。

我在下面包含了代码片段。它不会在 SO 上运行,因为 SO 在 AJAX 请求上将源设置为 null。因此,我还包含了一个指向有效代码笔解决方案的链接。

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);

最新更新