1 回答

TA貢獻1872條經驗 獲得超4個贊
Excel
除非確實需要,否則不要生成文件。如果您想生成沒有任何特定格式、圖表、宏等的數據,只需生成CSV
包含純數據的文件即可。要讀取JSON
和生成,CSV
您可以使用支持這兩種數據格式的Jackson庫。假設你的JSON
樣子如下:
{
? "rows": [
? ? {
? ? ? "id": 1,
? ? ? "name": "Vika",
? ? ? "age": 27
? ? },
? ? {
? ? ? "id": 2,
? ? ? "name": "Mike",
? ? ? "age": 28
? ? }
? ]
}
您需要創建POJO適合該結構的模型,反序列化為JSON對象并將對象序列化以進行CSV格式化。示例解決方案如下所示:
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SequenceWriter;
import com.fasterxml.jackson.dataformat.csv.CsvMapper;
import com.fasterxml.jackson.dataformat.csv.CsvSchema;
import java.io.File;
import java.util.List;
public class JsonApp {
? ? public static void main(String[] args) throws Exception {
? ? ? ? File jsonFile = new File("./resource/test.json").getAbsoluteFile();
? ? ? ? ObjectMapper jsonMapper = new ObjectMapper();
? ? ? ? Response response = jsonMapper.readValue(jsonFile, Response.class);
? ? ? ? CsvMapper csvMapper = new CsvMapper();
? ? ? ? CsvSchema schema = csvMapper.schemaFor(Item.class).withHeader();
? ? ? ? SequenceWriter sequenceWriter = csvMapper.writer(schema).writeValues(System.out);
? ? ? ? sequenceWriter.writeAll(response.getRows());
? ? }
}
class Response {
? ? private List<Item> rows;
? ? // getters, setters
}
@JsonPropertyOrder({"id", "name", "age"})
class Item {
? ? private int id;
? ? private String name;
? ? private int age;
? ? // getters, setters
}
上面的代碼打印:
id,name,age
1,Vika,27
2,Mike,28
添加回答
舉報