如何将CSV数据转换为JSON对象


How to convert CSV Data to JSON Object

所以我有这个csv文件(csv文件可能最好放在服务器端,但还没有决定)。用户很可能会从下拉菜单中选择这些csv文件。然后,在选择了一个特定的文件后,用户单击"输入",然后这个选定的csv文件应该作为一个数组在javascript中读取。那么如何做到这一点呢?:-

我的问题是关于如何将变量和数据从PHP传递到JavaScript?

___csv_file_____

Class,      Subclass,           Company,    Product,
Chocolate,  Wafer chocolate,    Nestle, KitKat,
Chocolate,  White chocolate,    Nestle, Milkybar,
Chocolate,  White chocolate,    Nestle, Milkybar,
Chocolate,  Caramel chocolate,  Nestle, BarOne,
Chocolate,  Milk chocolate,     Nestle, Nestle Milk chocolate,
Chocolate,  Milk chocolate,     Nestle, Nestle Milk chocolate,
Chocolate,  Milk chocolate,     Nestle, Nestle Milk chocolate,
Chocolate,  Milk chocolate,     Nestle, Nestle Milk chocolate,
Chocolate,  Milk chocolate,     Cadbury,    Dairy milk,

为了手动阅读它,这就是已经做的。但正如你所看到的,它有所有的csv_data硬编码,但我想让它自动化(即通过读取csv文件生成)

    root = {
 "name": "Chocolate", "tag":"class",
 "children": [
  {
   "name": "Wafer", "tag":"subclass",
   "children": [
    {
      "name": "Nestle", "tag":"company",
     "children": [
      {"name": "KitKat", "tag":"product"}
     ]
    }
   ]
  },
  {
   "name": "White", "tag":"subclass",
   "children": [
    {
      "name": "Nestle", "tag":"company",
     "children": [
      {"name": "Milkybar", "tag":"product"}
     ]
    }
   ]
  },
    {
   "name": "Caramel", "tag":"subclass",
   "children": [
    {
      "name": "Nestle", "tag":"company",
     "children": [
      {"name": "BarOne", "tag":"product"}
     ]
    }
   ]
  },    
    {
   "name": "Milk", "tag":"subclass",
   "children": [
    {
      "name": "Nestle", "tag":"company",
     "children": [
      {"name": "Nestle Milk", "tag":"product"}
     ]
    },  {
      "name": "Cadbury", "tag":"company",
     "children": [
      {"name": "Dairy Milk", "tag":"product"}
     ]
    }
   ]
  }


 ]
};

现在的问题是,我希望javascript只从本地位置读取这个csv文件。但是,在JAVASCRIPT中,如何将CSV文件读取到如此复杂的维度数组中呢?

可能的设置:

PHP web服务器(或NodeJS服务器-我个人最喜欢)

可能的工作流程:

  • CSV文件的php上传页面/或通过FTP/SSH上传
  • csv在服务器上
  • 带有paramdataromid=csvfile的php页面提供了从csv到json的数据转换。。(如果csv文件不包含太多行,请将其读取到php数组中,然后通过获取每一行(fgetcsv())并向总数组中添加一个子数组,用json_encode()将其吐出)
  • 根据您如何向d3提供数据,使用ajax访问php页面以访问json或将其包含在页面中(我认为通过ajax加载它,从页面所在的浏览器访问文件更好-您可以使用jQueryget())

首先在服务器上创建一个PHP文件,为其命名为candyData.PHP,其中包含:

//code to read your data.csv
//code which stores the data from the csv into an object $candyData
$json = json_encode($candyData);
return $json

然后在客户端使用Javascript,我还将使用JQuery:

jQuery.ajax({
    url: "http://example.mysite.com/rest/candyData.php",
    type: "GET",
    success: function (response) {
        var candyData = response;
        //Here you'd put all the code you currently have so you can visualize the data
    },
    error: function (response) {
        console.log("failed");
    }
});