我正在尝试从使用文件上载程序输入上载的csv文件接收的数据创建json文件。
我发现很多帖子都是用javascript写的,但它们在typescript中对我来说不太管用。
我在运行下面的代码时得到的错误是csv.split不是一个函数,是否有人知道我可以如何修改代码来工作。
如果你需要更多的信息,请提前告诉我,谢谢。
组件

public testFile() {
    var file = (<HTMLInputElement>document.getElementById('fileInput')).files[0];

    var jsonFile = this.csvJSON(file);


    // Set Http POST options
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    // Call Api with test connection data
    this.http
        .post('/api/TestConnection/TestConnection', jsonFile, options)
        .subscribe(data => {
            // alert request ok
            alert('ok');
        }, error => {
            // Log error
            console.log(error.json());
        });
}

public csvJSON(csv) {
    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
    return JSON.stringify(result); //JSON
}

最佳答案

您正在将File传递给csvJSON方法,而不是文件的文本。您可以使用FileReader阅读其内容。这里有一个例子

const convertFile = () => {
  const input = document.getElementById('fileInput');

  const reader = new FileReader();
  reader.onload = () => {
    let text = reader.result;
    console.log('CSV: ', text.substring(0, 100) + '...');

    //convert text to json here
    //var json = this.csvJSON(text);
  };
  reader.readAsText(input.files[0]);
};

<input type='file' onchange='convertFile(event)' id='fileInput'>

07-26 03:34