前言:

当我使用 com.csvreader.CsvWriter 对 .csv 后缀格式文件内容进行写入时,发现所有带有 字符串 内容的字段信息都会默认加上转义字符. 文件生成后,输出的结果不是我想要的内容. 百度了很久都没有找到关于使用 CsvWriter 类时对字符串内容怎么解决转义的情况.当然也可能是检索的标题不太对吧. 故自己重新出了一个小的使用教程对这个问题进行解决

A. 需求描述:

需要对文件中的内容解析并且对经过 Base64 加密后的 extendField 字段内容进行解码,得到明文信息后再重新生成一份 .csv 后缀格式的文件或者是做具体的业务处理

文档编辑器的阅览效果:

WPS的文件内容阅览效果:

B. 问题描述:

当我对文件内容的 extendField 加密字段进行解码后,拿到的是一个JSON的字符串内容,样例如下

{"repayOccupyFee":200}

从上面的内容可以看出,此时解析为明文的内容就是一个很正常的JSON并且是符合JSON格式规范的.

当我使用 com.csvreader.CsvWriter 类对解析后的所有文件内容进行相应业务处理后,重新生成 .csv 后缀格式的文件. 所有的字符串内容会默认进行转义的处理.如上面JSON串的内容会变成

{""repayOccupyFee"":200}

这时问题来了,这样默认的转义肯定不是我所需要的内容,也不是一个正常的JSON内容了.从上面的例子可以看出 CsvWriter 类对所有的字符串对象或者是有字符串等特定标识符的都会进行默认添加转义, 如 " 与 ' 这种符号,会加 /" 与 /' 的处理.

当你本来就是需要一个很正常的JSON串内容体时,这样转义后的数据,JSON串中的 K值根本转不成 json 对象

C. 问题解决:

后来通过多次的调试与查看 com.csvreader.CsvWriter 类的源码,发现有一个参数可以解决生成文件时不对字符串内容进行默认添加转义的处理.从而保障了文件成时JSON中内容不会乱加引号的情况

//创建文件
csvWriter = new CsvWriter(targetFilePath, LINE_VERTIACAL_BAR, Charset.forName(FILE_ENCODING_UTF8));//开启字符串内容无需转义的参数
csvWriter.setUseTextQualifier(false);//先写文件头
csvWriter.writeRecord(headers);//写文件内容
for (ReconciliationDataDetailModel detail : dataList) {String[] csvContent = getDecodeValuesFromObject(detail, headers);csvWriter.writeRecord(csvContent);
}
csvWriter.setUseTextQualifier(false)  这个属性参数在源码里面默认为true , 只有你在写文件时设置为 false 才会不对字符串内容进行转义的处理.

提示:

1. 使用这个参数时需要注意若是你的字段内容本来就是要保持字符串输出的话,需要自己手动加上引号. 因为生成文件时,字段默认会去掉 引号 内容来进行写入的 ; 如 "helloword" 的String类型对象内容写成文件时为 helloword   ; 当你想保留字符的标识号,写成 "helloword" 来输出的文件中, 就要手动添加 " 号

2. 如你是一个String类型的JSON串内容,使用这个参数时就会很好用,妥善的解决JSON串中K值多加了 " 号的情况 ; 也不需要象其它网上的什么乱七八糟的教程版本去搞什么字符的特殊处理

JAVA中使用 com.csvreader.CsvWriter 类时如何解决文件中JSON内容写出时字符串内容的转义问题?相关推荐

  1. java opencv 读取视频_java使用OpenCV从视频文件中获取帧

    本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...

  2. 将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中

    package again;import java.io.*;/* 1.编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中,a.txt 文件中的单词 ...

  3. 【C 语言】文件操作 ( 配置文件读写 | 写出或更新配置文件 | 逐行遍历文件文本数据 | 获取文件中的文本行 | 查询文本行数据 | 追加文件数据 | 使用占位符方式拼接字符串 )

    文章目录 一.逐行遍历文件文本数据 1.获取文件中的文本行 2.查询文本行数据 3.追加文件数据 4.使用占位符方式拼接字符串 二.完整代码示例 一.逐行遍历文件文本数据 1.获取文件中的文本行 调用 ...

  4. python中数据读写_【循序渐进学Python——文件中数据的读写以及操作】

    [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] [循序渐进学Python--文件中数据的读写以及操作] 相信大家都想过自己有一天,可以用 ...

  5. java类索引_《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合...

    讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了.现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志.类索引.父类索引.接口索引集合. 1. 访问标 ...

  6. java虚拟机标志_《Java虚拟机原理图解》1.3、class文件中的访问标志、类索引、父类索引、接口索引集合...

    讲完了class文件中的常量池,我们就相当于克服了class文件中最麻烦的模块了.现在,我们来看一下class文件中紧接着常量池后面的几个东西:访问标志.类索引.父类索引.接口索引集合. 1. 访问标 ...

  7. java导出jar带第三方库_在.jar文件中导出java库

    我仍然是 java的新手,我对导出.jar文件非常新.我有一个小游戏,我想发送给一些朋友,我被告知在另一个问题,我应该将它导出到一个可执行的jar文件.好吧,我终于在我的计算机上工作了但是当我把它发送 ...

  8. java取邮箱前缀_java抓取网页或文件中的邮箱号码

    java抓取网页或文件中的邮箱号码 发布时间:2020-10-18 08:58:32 来源:脚本之家 阅读:69 作者:java大渣渣 本文实例为大家分享了java抓取邮箱号码的具体代码,供大家参考, ...

  9. java关于替换文本输出的讲解_java替换文件中某一行文本的内容

    个人博客 地址:http://www.wenhaofan.com/article/20180913160442 代码如下 package com.wenhaofan.common.kit; impor ...

最新文章

  1. Spring对Hibernate事务管理
  2. Java内存溢出和内存泄露后怎么解决
  3. Angular 里 unknown 和 any 的区别
  4. 看了就彻底明白人生!!!
  5. oracle链接失去联系,[Oracle报错]ORA-03135: connection lost contact.
  6. 95-20-050-启动器-ServerBootstrap
  7. 我的电脑已经禁ping,应该如何启用该功能?
  8. mac 更换默认蓝牙适配器_解决Switch最大遗憾,谷粒ROUTE Air蓝牙适配器:简单好用...
  9. Winform 开发用户控件
  10. 【转】GIS:为什么我和别的软件不一样
  11. 支付宝支付即时到账接口在ThinkPHP商城中的应用
  12. 专业的CMMI3认证咨询公司告诉你从CMMI3升到CMMI5级有哪些优势?
  13. Python爬虫-模拟登入-selenium模块
  14. 计算机信息管理专科,计算机信息管理大专简历范文
  15. Bootstrap可视化布局
  16. 力扣刷题笔记:1438. 绝对差不超过限制的最长连续子数组(滑窗模板题,选择有序列表SortedList()数据类型就不会超时)
  17. Open mv识别三角形的办法
  18. 外呼系统四大功能,助力企业进入智能电销时代
  19. Keras基础自学二十(图像旋转,图像剪切,图像移动)
  20. 什么是海外调查问卷?都有哪些形式

热门文章

  1. 父亲节到了,教你用Python动画神器送上节日祝福
  2. 1/2/3/4/5G多址接入技术(FDMA、TDMA、CDMA、OFDMA、新型多址技术)
  3. 汇编指令:MOV与ldr区别
  4. winform中自定义控件里面的控件随着自定义控件的改变而改变
  5. Redis之主从同步
  6. 商品详情页图片的放大
  7. 基于javaEE的医院预约挂号系统ssm
  8. Oracle数据库连接字符串(经典大全)
  9. np.append()函数用法
  10. matlab 选择文件夹、选择文件GUI和逐一读取文件夹中的文件