淘先锋技术网

首页 1 2 3 4 5 6 7

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的有力工具。它非常简单易用,同时也是高性能和可预测的。