Json是一種數據格式,通常用于傳輸數據。與之對應的,CSV也是一種數據格式,通常用于存儲和分發數據。在Java中,我們可以使用一些工具庫來將JSON讀入內存并轉換為CSV。
一個常用的Java工具庫是Jackson,它提供了非常簡單的API來讀寫JSON和CSV文件。以下是一個基本的例子:
ObjectMapper mapper = new ObjectMapper(); // JSON to CSV JsonNode node = mapper.readTree(new File("input.json")); CsvSchema.Builder csvSchemaBuilder = CsvSchema.builder(); JsonNode firstObject = node.elements().next(); firstObject.fieldNames().forEachRemaining(fieldName ->{csvSchemaBuilder.addColumn(fieldName);} ); CsvSchema csvSchema = csvSchemaBuilder.build().withHeader(); SequenceWriter writer = mapper.writerFor(JsonNode.class).with(csvSchema); writer.writeAll(node, new File("output.csv")); System.out.println("Conversion completed!"); // CSV to JSON CsvSchema csvSchema = CsvSchema.emptySchema().withHeader(); MappingIterator<Map<String, String>> iterator = new CsvMapper().readerFor(Map.class).with(csvSchema).readValues(new File("input.csv")); List<Map<String,String>> list = iterator.readAll(); ObjectNode rootNode = mapper.createObjectNode(); rootNode.putPOJO("data", list); mapper.writerWithDefaultPrettyPrinter().writeValue(new File("output.json"), rootNode); System.out.println("Conversion completed!");
在這個例子中,我們首先使用ObjectMapper讀入JSON文件并將其轉換為JsonNode對象。然后,我們使用CsvSchema.Builder構建CSV schema。通過枚舉JsonNode對象的第一個元素的字段名,我們可以動態地構建CSV列。然后,我們使用SequenceWriter將JsonNode寫入CSV文件。
要將CSV文件轉換回JSON,我們使用CsvSchema也是很容易的。首先,我們通過CsvSchema.emptySchema().withHeader()來讀取CSV文件并將其轉換為MappingIterator<Map<String, String>>。然后,我們將Map列表轉換為一個ObjectNode對象。最后,我們使用ObjectMapper來將ObjectNode寫入JSON文件。
Jackson可是我們用于將JSON轉換為CSV和CSV轉換回JSON的有力工具。它非常簡單易用,同時也是高性能和可預測的。