通过FileReaderAPI读取文件并将其转换为json对象

通过FileReaderAPI读取文件并将其转换为json对象,json,csv,object,reactjs,Json,Csv,Object,Reactjs,我正在做一个Reactjs项目。在这个项目中,我需要从本地读取csv文件并将其转换为json对象。我使用node包将csv文件转换为json对象。请参阅下面的代码: import React from 'react'; import ReactDOM from 'react-dom'; var objects; var ReadFile = React.createClass({ readFile:function(){ var file = this.refs.fi

我正在做一个Reactjs项目。在这个项目中,我需要从本地读取csv文件并将其转换为json对象。我使用node包将csv文件转换为json对象。请参阅下面的代码:

import React from 'react';
import ReactDOM from 'react-dom';

var objects;

var ReadFile = React.createClass({
    readFile:function(){
        var file = this.refs.file.files[0];
        var reader = new FileReader();
        reader.onload = function(evt){
             var resultText = evt.target.result;
             objects = this.csvToJson(resultText);
             console.log(objects);
        }.bind(this);
        var newFile = file.slice(0,5000);
        reader.readAsText(newFile); 
    },
    csvToJson:function(csvString){
        var Converter = require("csvtojson").Converter;
        var converter = new Converter({});
        converter.fromString(csvString, function(err,result){
           //When i console log the result it is working but when i return The result:
           // i am getting a undefined error
           //console.log(result);
           return result;
        });
    },
    render:function(){
      return (
         <input type="file" ref="file" onChange={this.readFile} /> 
      );
    }
});

ReactDOM.render(<ReadFile />,document.getElementById('container'));
从“React”导入React;
从“react dom”导入react dom;
var对象;
var ReadFile=React.createClass({
readFile:function(){
var file=this.refs.file.files[0];
var reader=new FileReader();
reader.onload=函数(evt){
var resultText=evt.target.result;
objects=this.csvToJson(resultText);
console.log(对象);
}.约束(本);
var newFile=file.slice(05000);
reader.readAsText(新文件);
},
csvToJson:函数(csvString){
var转换器=需要(“csvtojson”)。转换器;
var转换器=新转换器({});
converter.fromString(csvString,函数(err,result){
//当我控制台记录结果时,它正在工作,但当我返回结果时:
//我得到一个未定义的错误
//控制台日志(结果);
返回结果;
});
},
render:function(){
返回(
);
}
});
ReactDOM.render(,document.getElementById('container'));
当我控制台记录来自csvToJson文件的结果时,我得到了一个未定义的错误。请有人指导我,我做错了什么?

import React,{Component}来自'React'
import React, { Component } from 'react'
import { connect } from 'react-redux'
import ReactFileReader from 'react-file-reader';

export default class CsvRead extends React.Component {
  constructor(props) {
    super(props);
  }
  handleFiles = files => {
    var reader = new FileReader();
    reader.onload = function(e) {
    // Use reader.result
    var csv = reader.result;
    var lines = csv.split("\n");
    var result = [];
    var headers=lines[0].split(",");
    for(var i=1;i<lines.length;i++){
      var obj = {};
      var currentline=lines[i].split(",");
      for(var j=0;j<headers.length;j++){
        obj[headers[j]] = currentline[j];
      }
      result.push(obj);
      }  
      //return result; //JavaScript object
      result= JSON.stringify(result); //JSON
    console.log(result);
  }
  reader.readAsText(files[0]);
}

  render() {
    return (
      <ReactFileReader handleFiles={this.handleFiles} fileTypes={'.csv'}>
        <button className='btn'>Upload</button>
      </ReactFileReader>
    );
  }
}
从“react redux”导入{connect} 从“react文件读取器”导入react文件读取器; 导出默认类CsvRead扩展React.Component{ 建造师(道具){ 超级(道具); } handleFiles=文件=>{ var reader=new FileReader(); reader.onload=函数(e){ //使用reader.result var csv=reader.result; 变量行=csv.split(“\n”); var结果=[]; var headers=行[0]。拆分(“”,“”);
对于(var i=1;i您的csv输入是什么?代码看起来很好,应该可以工作…@wollnyst任何csv文件您是否找到了答案,即使我正在寻找类似的解决方案。当我当前的开发阶段是99%客户端并使用webpack dev server时,请告诉我您是否有针对上述+1 for FileReader()的任何解决方案。(浏览器中不存在fs方法)我用ES6语法很好地完成了这个示例。