JAVA实现CSV文件转JSON。

CSV文件一般是以逗号为分隔值的文件(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。

JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。示例如下

{"name": "John Doe",
"age": 18,
"address":{"country" : "china","zip-code": "10000"}}

JAVA实现CSV转JSON的思路是根据CSV格式特点使用 逗号进行切割,然后使用String对象将分割的对象进行拼接成JSON格式。

import java.io.*;
import java.util.Arrays;
import java.util.List;
// CSV 转 json
// 使用csvToJSon对象的.ConvertToJson方法 带入 csv文件路径及导出路径。
public class CsvToJson {private List<String> stringToList(String s, String sep) {if (s == null) {return null;}String[] parts = s.split(sep);return Arrays.asList(parts);}//将分割的第一行的表头list和后面的值list进行拼接//拼接完后以string返回//示例如{"name" : "kevin","sex" : "man"}private String stringToJson(List<String> header, List<String> lineData) throws Exception {if (header == null || lineData == null) {throw new Exception("输入不能为null。");}else if (header.size() != lineData.size()) {throw new Exception("表头个数和数据列个数不等。");}StringBuilder sBuilder = new StringBuilder();sBuilder.append("{ ");for (int i = 0; i < header.size(); i++) {String mString = String.format("\"%s\": \"%s\"", header.get(i), lineData.get(i));sBuilder.append(mString);if (i != header.size() - 1) {sBuilder.append(", ");}}sBuilder.append(" }");return sBuilder.toString();}public void ConvertToJson(InputStream filePath, OutputStream outPutPath) throws Exception {//创建BufferedReader 来读文件//创建使用BufferedWriter 来写文件InputStreamReader isr = new InputStreamReader(filePath,"utf-8");BufferedReader reader = new BufferedReader(isr);OutputStreamWriter osw = new OutputStreamWriter(outPutPath,"utf-8");BufferedWriter writer = new BufferedWriter(osw);try {String sep = ",";//将csv表格第一行构建成stringString headerStr = reader.readLine();if (headerStr.trim().isEmpty()) {System.out.println("表格头不能为空");return;}//将String字符串通过split(",")csv是以,作分隔符// 进行切割输出成ListList<String> header = stringToList(headerStr, sep);String line;int lineCnt = 1;while ((line = reader.readLine()) != null) {if (line.trim().isEmpty()) {System.out.println("第" + lineCnt + "行为空,已跳过");continue;}List<String> lineData = stringToList(line, sep);if (lineData.size() != header.size()) {String mString = String.format("第%d行数据列和表头列个数不一致\r\n%s", lineCnt, line);System.err.println(mString);break;}String jsonStr = stringToJson(header, lineData);writer.write(jsonStr);writer.write("\r\n");lineCnt++;}} finally {if (reader != null) {reader.close();}if (writer != null) {writer.close();}}}public static void main(String[] args) throws Exception {//使用Java IO流操作打开/导出文件InputStream filePath = new FileInputStream("/Users/Desktop/dwa/11111.csv");OutputStream outPutPath = new FileOutputStream("/Users/Desktop/2222.json");CsvToJson csvToJSon = new CsvToJson();csvToJSon.ConvertToJson(filePath, outPutPath);System.out.println("转换完成");}}

JAVA实现CSV文件转JSON。相关推荐

  1. java导出csv文件乱码_记一次java生成csv文件乱码的解决过程 (GB2312编码)

    系统:win7 (格式:中文(简体,中国)) 工具:Eclipse (默认编码utf-8) 服务两个:[restful接口]  和 [服务*** server]. 场景:[服务*** server]多 ...

  2. java 解析 csv 文件

    文章分类:JavaEye 一.貌似有bug,不行用 二.或 三. 的方法 Java代码   import java.io.BufferedReader; import java.io.FileInpu ...

  3. 用正则表达式和java解析csv文件

    用正则表达式和java解析csv文件 作者:弹着钢琴设计  来源:博客园  发布时间:2009-06-15 18:31  阅读:337 次  原文链接   [收藏]   在解析csv文件之前,先来看看 ...

  4. java转换CSV文件生成xml格式数据

    注册CSDN快六个月了,之前一直是看园子里的文章,或者碰到问题时,进来查点资料,今天终于决定写一篇自己在园子里的blog. 好吧,鉴于水平太菜,就只记录过程,其中原理啥的并不是很明晰,所以此blog只 ...

  5. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...

    http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...

  6. java读取csv文件

    2019独角兽企业重金招聘Python工程师标准>>> CSV其实就是COMMA SEPARATED VALUE的缩写. 在开发中用Java操作csv文件有专门的的API叫javac ...

  7. java读取csv文件_使用扫描仪读取Java中的CSV文件

    java读取csv文件 We can use Java Scanner Class to read CSV File in java. 我们可以使用Java扫描程序类在Java中读取CSV文件. 读取 ...

  8. java 生成csv文件_Java生成CSV文件实例详解

    本文实例主要讲述了java生成csv文件的方法,具体实现步骤如下: 1.新建csvutils.java文件: package com.saicfc.pmpf.internal.manage.utils ...

  9. Java 导出CSV文件及实现web下载CSV

    本文主要介绍Java 导出CSV文件到本地及实现web下载CSV. 1.Java 导出CSV文件到本地 csvWriter: package com.csvio;import java.io.Buff ...

最新文章

  1. 小蚂蚁学习mysql性能优化(4)--SQL以及索引优化--具体一些优化方法
  2. Spring的环绕通知
  3. radioGroup中radiobutton不能互斥问题
  4. PHP上传文件大小限制问题 post_max_size对大小的影响及解决方法
  5. golang json 读写配置文件
  6. P3332-[ZJOI2013]K大数查询【树套树】
  7. spring事务管理中,用try-catch处理了异常,事务也会回滚?
  8. sklearn之Multiclass 估计器
  9. php滑动轮播效果,js实现移动端手指滑动轮播图效果
  10. 【一天一个C++小知识】007.C++中的struct、enum和union以及内存对齐与大小端问题
  11. FRR BGP协议分析13 -- ZEBRA路由的处理2
  12. java构建模式_《Java设计模式》之构建者模式
  13. 【元胞自动机】基于matlab元胞自动机森林大火【含Matlab源码 235期】
  14. 万圣节头像挂件微信小程序前端
  15. php里用钢笔画曲线,ps钢笔工具怎么抠图
  16. centos7.X版本如何下载网络流量实时监控工具iftop
  17. unity井字棋和一些重要概念(中山大学3D游戏作业2)
  18. 《 初学 》 html5 制作简单时钟
  19. dropdownList获取值
  20. 金额平均分配算法 python实现

热门文章

  1. vue如何实现消息的无缝滚动
  2. 最近某网站泄露密码数据分析
  3. R语言使用caret包的confusionMatrix函数计算混淆矩阵、基于混淆矩阵的信息手动编写函数计算Specificity、特异度指标
  4. NetSuite SRP是通过什么解决问题的?
  5. 苹果手机中病毒显示无服务器,iPhone手机真的不会“中毒”?出现这3个状况就要小心了...
  6. “数据结构”视频资料
  7. 怎么用Folx下载制作短视频所用的素材
  8. HTML中z index属性是用来,css中z-index 属性与用法详解
  9. 修改Switch开关按钮的颜色
  10. 异构计算, GPU和框架选型指南