Кто-нибудь знает, как получить URL-адрес csv и преобразовать его в объект json, чтобы я мог использовать инструменты построения диаграмм Google в js?
Конвертировать файл csv в json object datatable
Ответ 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
}