JSON与CSV相互转换

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


    com.fasterxml.jackson.dataformat
    jackson-dataformat-csv
    2.9.8


    com.fasterxml.jackson.core
    jackson-databind
    2.9.8

一、将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 orderLines = csvMapper.readerFor(OrderLine.class)
  .with(orderLineSchema)
  .readValues("json字符串");

 

你可能感兴趣的:(java,csv)