近年來,JSON和CSV成為了非常常用的數(shù)據(jù)交換格式。而在Java中,也有很多解析和生成JSON和CSV的庫,我們可以方便地使用它們來進(jìn)行轉(zhuǎn)換。
首先,我們來看看如何將JSON轉(zhuǎn)換為CSV格式。
JSONObject json = new JSONObject("{\"name\":\"Alice\",\"age\":20,\"city\":\"New York\"}");
String[] headers = {"name", "age", "city"};
CSVFormat format = CSVFormat.DEFAULT.withHeader(headers);
Writer out = new StringWriter();
try (CSVPrinter printer = new CSVPrinter(out, format)) {
printer.printRecord(json.getString("name"), json.getInt("age"), json.getString("city"));
}
String csv = out.toString();
以上代碼中,我們使用了json庫中的JSONObject類,將JSON字符串解析成了JSONObject對象。隨后,我們將CSV的表頭指定為字符串?dāng)?shù)組,并使用CSVFormat類設(shè)置了CSV的格式(默認(rèn)格式中包含“,”分隔符)。接著,我們使用Writer和CSVPrinter將數(shù)據(jù)寫入CSV格式,并將結(jié)果存儲在csv變量中。
接下來,我們看一下如何將CSV格式轉(zhuǎn)換為JSON格式。
String csv = "name,age,city\nAlice,20,\"New York\"";
CSVParser parser = CSVParser.parse(csv, CSVFormat.DEFAULT.withHeader());
JSONObject json = new JSONObject();
for (CSVRecord record : parser) {
json.put("name", record.get("name"));
json.put("age", Integer.parseInt(record.get("age")));
json.put("city", record.get("city"));
}
String jsonString = json.toString();
首先,我們通過CSVParser類解析了csv字符串,并使用withHeader()方法指定了表頭。接著,我們使用JSONObject類來保存每一行數(shù)據(jù)。注意,在CSV格式中,空格需要使用雙引號包裹,因此在讀取city字段時,我們需要使用get()方法而不是getAs()方法。最后,我們使用json.toString()方法將JSONObject對象轉(zhuǎn)換成JSON格式的字符串。
以上就是Java中的JSON和CSV格式轉(zhuǎn)換方法,它們提供了非常方便的數(shù)據(jù)交換方式。