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字符串");

 

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