一、JSON解析
JSON是一种轻量级的数据交换格式。主要是用于计算机系统之间进行数据的传递。
特点:
- JSON只允许UTF-8编码,不存在编码的问题;
- JSON内容仅包括key-value键值对,格式简单,不存在冗余,是一种轻量级结构;
一、使用Fastjson进行JSON的解析
首先是要下载:
二、JSON类
JSON类的作用主要是用于原始转换,常用方法:
- 将Java对象“序列化”为JSON字符串:JSON.toJSONString(Object object)
- 将JSON字符串反序列化为Java对象 JSNO.parseObject(String text)
二、Excel文件解析
Apache POI提供给Java程序对Microsoft Office格式档案进行读写功能的API开源类库。
首先是需要添加Jar包依赖:
把包导入之后,就需要导入一个Excel文件:
加载解析Excel文件:
//Workbook对象:Excel文件
//Sheet对象L:电子工作簿
//Row对象:数据行
//Cell对象:单元格
public class Demo01 {
public static void main(String[] args) throws IOException {
//解析一个excel对象
//通过输入流,读取excel文件
FileInputStream in = new FileInputStream("E:\\QQ\\2646121219\\FileRecv\\1627356552686.xlsx");
//将输入流传入Workbook
Workbook workbook = new XSSFWorkbook(in);
}
}
创建工作簿:
//创建工作簿sheet
Sheet sheet0 = workbook.createSheet("2022");
Sheet sheet1 = workbook.createSheet("2021");
Sheet sheet2 = workbook.createSheet("2020");
获取工作簿:
//按照名称获取工作簿
Sheet sheet0 = workbook.getSheet("Sheet0");
Sheet sheet1 = workbook.getSheetAt(1);
System.out.println("工作簿1中的数据行"+sheet0.getLastRowNum());
System.out.println("工作簿2中的数据行"+sheet1.getLastRowNum());
创建数据行:
Row row = sheet.createRow(0);
根据下标获取指定行:
Row row = sheet.getRow(0);
遍历所有行:
for(Row row : sheet){
System.out.println(row);
}
创建单元格:
Cell cell0 = row.createCell(0);
设置单元格的值:
cell0.setCellValue(UUID.randomUUID().toString());
整个解析过程:
public class Demo04 {
public static void main(String[] args) throws FileNotFoundException {
try (Workbook workbook = new XSSFWorkbook();
FileOutputStream out = new FileOutputStream("E:\\QQ\\2646121219\\FileRecv\\162.xlsx")) {
//创建工作簿sheet
Sheet sheet0 = workbook.createSheet("2022");
Sheet sheet1 = workbook.createSheet("2021");
Sheet sheet2 = workbook.createSheet("2020");
//创建数据行row
Row row = sheet0.createRow(0);
//创建单元格
Cell cell0 = row.createCell(1);
//往单元格里添加值
cell0.setCellValue(UUID.randomUUID().toString());
Cell cell1 = row.createCell(2);
cell1.setCellValue(LocalDateTime.now());
Cell cell2 = row.createCell(3);
cell2.setCellValue(Math.random()*10);
//将Workbook对象中包含的数据,通过输出流,写入Excel文件
workbook.write(out);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
三、超大Excel的解析
当遇到超大Excel的时候,使用的是EasyExcel,这些数据就会flush到磁盘上,不会出现内存不够的情况。
写入100w条数据:
读取100w条数据:
la