如何将上传的csv转换为angularjs中的json对象

如何将上传的csv转换为angularjs中的json对象,angularjs,Angularjs,这就是我们尝试过的。 确实如此。您可以编写一个函数将CSV转换为JSON,并将CSV对象传递给它。您需要做的就是将CSV的第一行保存为标题(您可以用逗号标识它们),并可以用换行符标识新条目\n 完成我在下面写的函数 var app = angular.module('myngCsv', [ngcsv]); app.controller('ngcsvCtrl', function($scope,$csv) { $scope.csv ={ content: null;

这就是我们尝试过的。
确实如此。

您可以编写一个函数将CSV转换为JSON,并将CSV对象传递给它。您需要做的就是将CSV的第一行保存为标题(您可以用逗号标识它们),并可以用换行符标识新条目
\n
完成我在下面写的函数

var app = angular.module('myngCsv', [ngcsv]);
app.controller('ngcsvCtrl', function($scope,$csv) {

    $scope.csv ={
        content: null;
        header: true,
        headerVisible: true,
        separator: ',',
        separatorVisible: true,
        result: null,
        encoding: 'ISO-8859-1',
        encodingVisible: true,
        accept: ".csv"
    };

});
函数csvToJSON(csv,回调){ 变量行=csv.split(“\n”); var结果=[]; var headers=行[0]。拆分(“”,“”); 对于(变量i=1;i创建文件读取器指令:

function csvToJSON(csv, callback) {
            var lines = csv.split("\n");
            var result = [];
            var headers = lines[0].split(",");
            for (var i = 1; i < lines.length - 1; i++) {
                var obj = {};
                var currentline = lines[i].split(",");
                for (var j = 0; j < headers.length; j++) {
                    obj[headers[j]] = currentline[j];
                }
                result.push(obj);
            }
            if (callback && (typeof callback === 'function')) {
                return callback(result);
            }
            return result;
        }
创建工厂以将csv数据转换为json数据

app.directive('fileReaderDirective', function() {
    return {
        restrict: "A",
        scope: {
            fileReaderDirective: "=",
        },
        link: function(scope, element) {
            $(element).on('change', function(changeEvent) {
                var files = changeEvent.target.files;
                if (files.length) {
                    var r = new FileReader();
                    r.onload = function(e) {
                        var contents = e.target.result;
                        scope.$apply(function() {
                            scope.fileReaderDirective = contents;
                        });
                    };
                    r.readAsText(files[0]);
                }
            });
        }
    };
});
app.factory('readFileData',function(){
返回{
processData:函数(csv_数据){
var record=csv_data.split(/\r\n |\n/);
var headers=记录[0]。拆分(',');
var行=[];
var json={};
对于(变量i=0;i

查看工作示例:

您可以尝试使用外观非常简单和优雅的用法

谢谢回复,我会尝试。谢谢回复,我会尝试回答,我会尝试
app.directive('fileReaderDirective', function() {
    return {
        restrict: "A",
        scope: {
            fileReaderDirective: "=",
        },
        link: function(scope, element) {
            $(element).on('change', function(changeEvent) {
                var files = changeEvent.target.files;
                if (files.length) {
                    var r = new FileReader();
                    r.onload = function(e) {
                        var contents = e.target.result;
                        scope.$apply(function() {
                            scope.fileReaderDirective = contents;
                        });
                    };
                    r.readAsText(files[0]);
                }
            });
        }
    };
});
app.factory('readFileData', function() {
    return {
        processData: function(csv_data) {
            var record = csv_data.split(/\r\n|\n/);
            var headers = record[0].split(',');
            var lines = [];
            var json = {};

            for (var i = 0; i < record.length; i++) {
                var data = record[i].split(',');
                if (data.length == headers.length) {
                    var tarr = [];
                    for (var j = 0; j < headers.length; j++) {
                        tarr.push(data[j]);
                    }
                    lines.push(tarr);
                }
            }

            for (var k = 0; k < lines.length; ++k){
              json[k] = lines[k];
            }
            return json;
        }
    };
});