如何在Java中按列名读取CSV

如何在Java中按列名读取CSV,java,json,csv,Java,Json,Csv,我有一个Java程序,它使用org.json读取CSV文件并将其解析为json格式。但是,我不知道如何使用这种格式 我需要从列中获取数据标签,确保它是最新的条目,然后将它们添加到JSON对象中 如果您必须在每次迭代中创建一个新的jObject,我该怎么做?我的代码逐行运行,我不确定如何创建正确的输出 if(reader != null){ //StringBuilder builder = new StringBuilder();

我有一个Java程序,它使用org.json读取CSV文件并将其解析为json格式。但是,我不知道如何使用这种格式

我需要从列中获取数据标签,确保它是最新的条目,然后将它们添加到JSON对象中

如果您必须在每次迭代中创建一个新的jObject,我该怎么做?我的代码逐行运行,我不确定如何创建正确的输出

if(reader != null){
                         //StringBuilder builder = new StringBuilder();
                         String aux = "";
                         while ((aux = reader.readLine()) != null) {
                             jObject = new JSONObject();
                             String[] tab = aux.split(",");
                             if (count > 0){
                                jObject = new JSONObject();
                                jObject.put("time", tab[0]);
                                jObject.put("total", tab[1]);
                                jObject.put("Natural Gas", tab[2]);
                                jObject.put("Other Fossil Fuels", tab[3]);
                                jObject.put("Dual Fuel", tab[4]);
                                jObject.put("Nuclear", tab[5]);
                                jObject.put("Hydro", tab[6]);
                                jObject.put("Wind", tab[7]);
                                jObject.put("Other Renewables", tab[8]);
                                jObject.put("Unknown", tab[9]);
                                jArray.put(jObject);
                            }
最终输出应如下所示:

[{
"time":"2015-07-01 04:00:00",
"total" : "19474"  
  data : [{
  "name" : "Natural Gas",
  "load" :"1736"
   },{
    "name" : "Dual",
    "load" : "8366"
   } etc. 
[{"Natural Gas":"1736","total":"19474","Nuclear":"5352","time":"2015-07-01 04:00:00","Other Renewables":"349","Unknown":" ","Hydro":"3003","Dual Fuel":"8366","Wind":"393","Other Fossil Fuels":"275"}]
而是这样的:

[{
"time":"2015-07-01 04:00:00",
"total" : "19474"  
  data : [{
  "name" : "Natural Gas",
  "load" :"1736"
   },{
    "name" : "Dual",
    "load" : "8366"
   } etc. 
[{"Natural Gas":"1736","total":"19474","Nuclear":"5352","time":"2015-07-01 04:00:00","Other Renewables":"349","Unknown":" ","Hydro":"3003","Dual Fuel":"8366","Wind":"393","Other Fossil Fuels":"275"}]

我添加了一个计数,如果它是第一行列名,我将其保存为一个字符串,如果它是最新的,我将其保存为另一个字符串

String lastLineMinusOne = "";
String lastLine = "";
String firstLine = "";
                         while ((aux = reader.readLine()) != null) {
                             if(count == 0)firstLine = aux;
                             lastLineMinusOne = lastLine;
                             lastLine = aux;
                             count ++;
                            }
                         String[] first = firstLine.split(",");
                         String[] last = lastLine.split(",");