Конвертировать файл csv в json object datatable

Кто-нибудь знает, как получить URL-адрес csv и преобразовать его в объект json, чтобы я мог использовать инструменты построения диаграмм Google в js?

Ответ 1

Насколько я знаю, для большинства сценариев вы можете превратить csv в массив массивов js массивов, матрицу или любой объект javascript, следующий за вашим графическим инструментом.

Вам может потребоваться:

  • Получить содержимое файла CSV
  • Разберите его
  • Оберните результаты из 2 в инструмент рисования json (?)
  • Вызовите свою картографическую библиотеку

Для 1, если CSV файл размещен в вашем домене, вы можете сделать простой XMLHttpRequest, иначе попробуйте найти здесь "ту же самую политику происхождения".
Трудная часть - точка 2. Я видел несколько неудачных попыток для разбора CSV файлов вручную (точки с запятой могут содержаться как часть значения и т.д.)... Проверьте ссылку.

Ответ 2

Я понимаю, что это старый вопрос, но я столкнулся с этим сегодня, когда нужно сделать то же самое, и написал script, чтобы сделать это. Вы можете проверить это на моем github repo.

Следующий код выполнит то, что вам нужно (с помощью jQuery):

$.ajax("http://my.domain.com/mycsvfile.csv", {
    success: function(data) {
        var jsonobject = csvjson.csv2json(data);
        // Now use jsonobject to do some charting...
    },
    error: function() {
        // Show some error message, couldn't get the CSV file
    }
});

Счастливое кодирование:)

Ответ 3

Papa Parse для этого приятно.

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script src="libraries/PapaParse-4.1.2/papaparse.min.js"></script>

    <script>
    $(document).ready(function(){

        $("#submitbutton").click(function(){
            var myfile = $("#csvfile")[0].files[0];
            var json = Papa.parse(myfile, 
                {
                header: true, 
                skipEmptyLines: true,
                complete: function(results) {
                    console.log("Dataframe:", JSON.stringify(results.data));
                    console.log("Column names:", results.meta.fields);
                    console.log("Errors:", results.errors);
                }
            });

        })
    })
    </script>

</head>

<body>
    <form name="foo" method="post" enctype="multipart/form-data">
        <input id="csvfile" type="file" value="i">
    </form>

    <button id="submitbutton" type="button">Upload CSV file!</button>

</body>

</html>

Загрузка CSV:

+------+----------------+---------------+------------+
|  Id  |  Petal.Length  |  Petal.Width  |  Species   |
+======+================+===============+============+
|  1   |      1.4       |      0.2      |   setosa   |
+------+----------------+---------------+------------+
|  2   |      1.4       |      0.2      |   setosa   |
+------+----------------+---------------+------------+
|  3   |      1.3       |      0.2      |   setosa   |
+------+----------------+---------------+------------+
|  4   |      3.9       |      1.4      | versicolor |
+------+----------------+---------------+------------+
|  5   |      3.5       |       1       | versicolor |
+------+----------------+---------------+------------+
|  6   |      4.2       |      1.5      | versicolor |
+------+----------------+---------------+------------+
|  7   |      5.4       |      2.3      | virginica  |
+------+----------------+---------------+------------+
|  8   |      5.1       |      1.8      | virginica  |
+------+----------------+---------------+------------+

вы получите этот вывод в консоли:

Dataframe: [{"Id":"1","Petal.Length":"1.4","Petal.Width":"0.2","Species":"setosa"},{"Id":"2","Petal.Length":"1.4","Petal.Width":"0.2","Species":"setosa"},{"Id":"3","Petal.Length":"1.3","Petal.Width":"0.2","Species":"setosa"},{"Id":"4","Petal.Length":"3.9","Petal.Width":"1.4","Species":"versicolor"},{"Id":"5","Petal.Length":"3.5","Petal.Width":"1","Species":"versicolor"},{"Id":"6","Petal.Length":"4.2","Petal.Width":"1.5","Species":"versicolor"},{"Id":"7","Petal.Length":"5.4","Petal.Width":"2.3","Species":"virginica"},{"Id":"8","Petal.Length":"5.1","Petal.Width":"1.8","Species":"virginica"}]
Column names: ["Id", "Petal.Length", "Petal.Width", "Species"]
Errors: []

Ответ 4

CSV и JSON - разные форматы. JSON является иерархическим, а CSV представляет собой список значений. Поэтому, я думаю, вам нужно сначала проанализировать CSV (с помощью парсера, и не реализует себя). Этот анализатор предоставит вам объект, который затем можно было бы сериализовать в JSON или, возможно, преобразовать в другой объект до сериализации (еще раз используя парсер), чтобы получить желаемый формат.

Ответ 5

используйте этот код для руководства по разбору файла csv в json...

function processFiles(files) {
    var file = files[0];
    var reader = new FileReader();
    reader.onload = function (e) {
        var output = document.getElementById("fileOutput");
        var texto = e.target.result;
        csvJSON(texto);
    };
    reader.readAsText(file);
}
function csvJSON(csv) {
    var lines = csv.split("\n");
    var result = [];
    var headers;
    for (var i = 0; i < lines.length; i++) {
        headers = lines[i].split("\n");
    }
    var cont = 0;
    for (var i = 0; i < lines.length; i++) {

        var obj = {};
        var currentline = lines[i].split("\n");
        for (var j = 0; j < headers.length; j++) {
            obj[cont] = currentline[j];
        }
        cont++;
        result.push(obj);
    }

    return JSON.stringify(result); //JSON
}