React:导入CSV文件并解析

我有以下csv文件,该文件的名称data.csv与js控制器位于同一文件夹中:

namn,vecka,måndag,tisdag,onsdag,torsdag,fredag,lördag,söndag

Row01,a,a1,a2,a3,a4,a5,a6,a7

Row02,b,b1,b2,b3,b4,b5,b6,b7

Row03,c,c1,c2,c3,c4,c5,c6,c7

Row04,d,d1,d2,d3,d4,d5,d6,d7

Row05,e,e1,e2,e3,e4,e5,e6,e7

Row06,f,f1,f2,f3,f4,f5,f6,f7

Row07,g,g1,g2,g3,g4,g5,g6,g7

Row08,h,h1,h2,h3,h4,h5,h6,h7

Row09,i,i1,i2,i3,i4,i5,i6,i7

Row10,j,j1,j2,j3,j4,j5,j6,j7

Row11,k,k1,k2,k3,k4,k5,k6,k7

Row12,l,l1,l2,l3,l4,l5,l6,l7

作为响应,我需要导入一个csv文件并将其解析为JSON。我尝试了以下方法:

componentWillMount() {

this.getCsvData();

}

getData(result) {

console.log(result);

}

getCsvData() {

let csvData = require('./data.csv');

Papa.parse(csvData, {

complete: this.getData

});

}

由于某些原因,这不起作用。显示第一个console.log /static/media/data.0232d748.csv,第二个显示以下内容:

{

"data": [

[

"/static/media/horoscope-data.0232d748.csv"

]

],

"errors": [

{

"type": "Delimiter",

"code": "UndetectableDelimiter",

"message": "Unable to auto-detect delimiting character; defaulted to ','"

}

],

"meta": {

"delimiter": ",",

"linebreak": "\n",

"aborted": false,

"truncated": false,

"cursor": 41

}

}

我不明白我在做什么错。有人能帮我吗?

回答:

为了回答我自己的问题,我可以像这样重写它(/src/controllers/data-controller/data-

controller.js,添加了完整的代码以提高清晰度):

import React from 'react';

import Papa from 'papaparse';

import {withRouter} from 'react-router-dom';

class DataController extends React.Component {

constructor(props) {

super(props);

this.state = {

data: []

};

this.getData = this.getData.bind(this);

}

componentWillMount() {

this.getCsvData();

}

fetchCsv() {

return fetch('/data/data.csv').then(function (response) {

let reader = response.body.getReader();

let decoder = new TextDecoder('utf-8');

return reader.read().then(function (result) {

return decoder.decode(result.value);

});

});

}

getData(result) {

this.setState({data: result.data});

}

async getCsvData() {

let csvData = await this.fetchCsv();

Papa.parse(csvData, {

complete: this.getData

});

}

render() {

return (

<section className="data-controller">

...

</section>

);

}

}

export default withRouter(DataController);

在这里,我使用内置提取功能像流一样获取它,然后使用内置流读取器读取流,并使用解码数据TextDecoder。我也不得不移动文件。在它进入之前,/src/controllers/data-

controller我不得不将其移动到/public/data

以上是 React:导入CSV文件并解析 的全部内容, 来源链接: utcz.com/qa/433884.html

回到顶部