温馨提示:这篇文章已超过289天没有更新,请注意相关的内容是否还可用!
CSV(Comma-Separated Values)和JSON(JavaScript Object Notation)是两种常用的数据格式。CSV是一种纯文本形式的表格数据格式,数据以逗号分隔,每行表示一条记录,每个字段用逗号分隔。而JSON是一种轻量级的数据交换格式,以键值对的形式表示数据,使用大括号包围,键和值之间用冒号分隔。
在Java中,我们可以使用第三方库来处理CSV和JSON数据。下面是示例代码:
1. CSV转JSON:
import com.opencsv.CSVReader;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
public class CSVtoJSONConverter {
public static void main(String[] args) {
String csvFilePath = "data.csv";
String jsonFilePath = "data.json";
try {
CSVReader reader = new CSVReader(new FileReader(csvFilePath));
List<String[]> csvData = reader.readAll();
reader.close();
JSONArray jsonArray = new JSONArray();
String[] headers = csvData.get(0);
for (int i = 1; i < csvData.size(); i++) {
JSONObject obj = new JSONObject();
String[] rowData = csvData.get(i);
for (int j = 0; j < headers.length; j++) {
obj.put(headers[j], rowData[j]);
}
jsonArray.add(obj);
}
FileWriter writer = new FileWriter(jsonFilePath);
writer.write(jsonArray.toJSONString());
writer.close();
System.out.println("CSV转JSON成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
上述代码中,我们使用了`opencsv`库来读取CSV文件,将其转换为一个包含JSONObject的JSONArray。我们创建一个CSVReader对象,读取CSV文件的数据并存储在一个List中。然后,我们创建一个JSONArray用于存储转换后的JSON数据。接下来,我们遍历CSV数据的每一行,将每一行的字段与对应的列名一一对应,并将其放入一个JSONObject中。我们将JSONArray写入到一个JSON文件中。
2. JSON转CSV:
import com.opencsv.CSVWriter;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class JSONtoCSVConverter {
public static void main(String[] args) {
String jsonFilePath = "data.json";
String csvFilePath = "data.csv";
try {
JSONParser parser = new JSONParser();
JSONArray jsonArray = (JSONArray) parser.parse(new FileReader(jsonFilePath));
List<String[]> csvData = new ArrayList<>();
JSONObject firstObj = (JSONObject) jsonArray.get(0);
Iterator<String> keys = firstObj.keySet().iterator();
String[] headers = new String[firstObj.size()];
int index = 0;
while (keys.hasNext()) {
headers[index++] = keys.next();
}
csvData.add(headers);
for (Object obj : jsonArray) {
JSONObject jsonObject = (JSONObject) obj;
String[] rowData = new String[headers.length];
for (int i = 0; i < headers.length; i++) {
rowData[i] = jsonObject.get(headers[i]).toString();
}
csvData.add(rowData);
}
CSVWriter writer = new CSVWriter(new FileWriter(csvFilePath));
writer.writeAll(csvData);
writer.close();
System.out.println("JSON转CSV成功!");
} catch (IOException | ParseException e) {
e.printStackTrace();
}
}
}
上述代码中,我们使用了`opencsv`库来写入CSV文件。我们使用JSONParser解析JSON文件,将其转换为一个JSONArray。然后,我们创建一个List来存储CSV数据。我们首先获取JSON数据的第一个对象,遍历其所有的键值对,并将键作为CSV文件的列名。接下来,我们遍历JSONArray中的每个JSONObject,将其对应的值作为CSV文件的每一行数据。我们使用CSVWriter将数据写入CSV文件中。
通过以上示例代码,我们可以实现CSV和JSON之间的相互转换。