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