繁体   English   中英

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

[英]Can I fetch a Readable Stream then convert to JSON client side?

我希望使用Google表格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。 因此,我还提供了指向有效的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM