JSON与CSV相互转换

在这里我使用jackson相关的库来操作。在maven中添加以下依赖。

<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-csv</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>

一、将json转化成csv文件

        String ss = "json字符串";
        JsonNode jsonTree = new ObjectMapper().readTree(ss);
        CsvSchema.Builder csvSchemaBuilder = CsvSchema.builder();
        JsonNode firstObject = jsonTree.elements().next();
        firstObject.fieldNames().forEachRemaining(fieldName -> {csvSchemaBuilder.addColumn(fieldName);} );
        CsvSchema csvSchema = csvSchemaBuilder.build().withHeader();

        //一般csv会用excel打开,必须指定为gbk编码
        OutputStreamWriter ow = new OutputStreamWriter(new FileOutputStream(new File("e:/orderLines.csv")),"gbk");

        CsvMapper csvMapper = new CsvMapper();
        csvMapper.writerFor(JsonNode.class)
                        .with(csvSchema)
                        .writeValue(ow, jsonTree);

 

 

二、将csv文件转化成json

//实体类
public class OrderLine {
    private String item;
    private int quantity;
    private BigDecimal unitPrice;
  
    // Constructors, Getters, Setters and toString
}

//读取csv
CsvSchema orderLineSchema = CsvSchema.emptySchema().withHeader();
CsvMapper csvMapper = new CsvMapper();
MappingIterator<OrderLine> orderLines = csvMapper.readerFor(OrderLine.class)
  .with(orderLineSchema)
  .readValues("json字符串");

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章