将一个list集合转换成json文件并导出:

     数据集合:    List<Object> agencyList = new ArrayList<Object>();Map<String, Object> agencyMap = new HashMap<>();agencyMap.put("agencyName",agencyName);agencyMap.put("agencyAddress", agencyAddress);agencyMap.put("companyName", companyName);agencyMap.put("logoImageId", logoImageId);agencyMap.put("auctionAddress", agencyAuctionAddress);agencyMap.put("logoImage", logoImage);agencyList.add(agencyMap);

    将集合数据转换为json字符串(当然map集合亦可以):     JSONArray jsonObject = JSONArray.fromObject(agencyList);String jsonString1 = jsonObject.toString();CreateFileUtil.createJsonFile(jsonString1, "/fileStorage/download/json", "agency");

public class CreateFileUtil {/*** 生成.json格式文件*/public static boolean createJsonFile(String jsonString, String filePath, String fileName) {// 标记文件生成是否成功boolean flag = true;// 拼接文件完整路径String fullPath = filePath + File.separator + fileName + ".json";// 生成json格式文件try {// 保证创建一个新文件File file = new File(fullPath);if (!file.getParentFile().exists()) { // 如果父目录不存在,创建父目录
                file.getParentFile().mkdirs();}if (file.exists()) { // 如果已存在,删除旧文件
                file.delete();}file.createNewFile();if(jsonString.indexOf("'")!=-1){  //将单引号转义一下,因为JSON串中的字符串类型可以单引号引起来的  jsonString = jsonString.replaceAll("'", "\\'");  }  if(jsonString.indexOf("\"")!=-1){  //将双引号转义一下,因为JSON串中的字符串类型可以单引号引起来的  jsonString = jsonString.replaceAll("\"", "\\\"");  }  if(jsonString.indexOf("\r\n")!=-1){  //将回车换行转换一下,因为JSON串中字符串不能出现显式的回车换行  jsonString = jsonString.replaceAll("\r\n", "\\u000d\\u000a");  }  if(jsonString.indexOf("\n")!=-1){  //将换行转换一下,因为JSON串中字符串不能出现显式的换行  jsonString = jsonString.replaceAll("\n", "\\u000a");  }  // 格式化json字符串jsonString = JsonFormatTool.formatJson(jsonString);// 将格式化后的字符串写入文件Writer write = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");write.write(jsonString);write.flush();write.close();} catch (Exception e) {flag = false;e.printStackTrace();}// 返回是否成功的标记return flag;}}

public class JsonFormatTool {/*** 单位缩进字符串。*/private static String SPACE = "   ";/*** 返回格式化JSON字符串。* * @param json 未格式化的JSON字符串。* @return 格式化的JSON字符串。*/public static String formatJson(String json) {StringBuffer result = new StringBuffer();int length = json.length();int number = 0;char key = 0;// 遍历输入字符串。for (int i = 0; i < length; i++) {// 1、获取当前字符。key = json.charAt(i);// 2、如果当前字符是前方括号、前花括号做如下处理:if ((key == '[') || (key == '{')) {// (1)如果前面还有字符,并且字符为“:”,打印:换行和缩进字符字符串。if ((i - 1 > 0) && (json.charAt(i - 1) == ':')) {result.append('\n');result.append(indent(number));}// (2)打印:当前字符。
                result.append(key);// (3)前方括号、前花括号,的后面必须换行。打印:换行。result.append('\n');// (4)每出现一次前方括号、前花括号;缩进次数增加一次。打印:新行缩进。number++;result.append(indent(number));// (5)进行下一次循环。continue;}// 3、如果当前字符是后方括号、后花括号做如下处理:if ((key == ']') || (key == '}')) {// (1)后方括号、后花括号,的前面必须换行。打印:换行。result.append('\n');// (2)每出现一次后方括号、后花括号;缩进次数减少一次。打印:缩进。number--;result.append(indent(number));// (3)打印:当前字符。
                result.append(key);// (4)如果当前字符后面还有字符,并且字符不为“,”,打印:换行。if (((i + 1) < length) && (json.charAt(i + 1) != ',')) {result.append('\n');}// (5)继续下一次循环。continue;}// 4、如果当前字符是逗号。逗号后面换行,并缩进,不改变缩进次数。/*if ((key == ',')) {result.append(key);result.append('\n');result.append(indent(number));continue;}*/// 5、打印:当前字符。
            result.append(key);}return result.toString();}/*** 返回指定次数的缩进字符串。每一次缩进三个空格,即SPACE。* * @param number 缩进次数。* @return 指定缩进次数的字符串。*/private static String indent(int number) {StringBuffer result = new StringBuffer();for (int i = 0; i < number; i++) {result.append(SPACE);}return result.toString();}
}

当然其中涉及到转义字符处理的问题。

JAVA生成并导出json文件相关推荐

  1. java导入、导出Excel文件

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  2. 图形化开发(六)01-Three.js之导入模型——3dmax和SketchUp-editor编辑器导出json文件,在创建模型initMesh中外部的JSON文件

    图形化开发(六)01-Three.js之导入模型--3dmax和SketchUp-editor编辑器导出json文件,在创建模型initMesh中外部的JSON文件 导入模型 官方推荐我们使用的3D模 ...

  3. Java 使用EasyExcel导出excel文件

    Java 使用EasyExcel导出excel文件 一.引入pom依赖 二.导出实体 三. 生成excelController 四.效果 一.引入pom依赖 <dependency>< ...

  4. vue 增加js日志输出文件_Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考...

    本文只用于记录经验,为节省时间用于举例的UI也许有点简陋. 1.导出json文件 安装file-saver 使用 npm install file-saver --save 安装 file-saver ...

  5. Vue.JS项目导入导出JSON文件的方案之一,其他项目也可参考

    此文章用于记录经验,方便下次借鉴,为节省时间用于举例的UI也许有点简陋,将就将就-重要的是方法. 1.导出json文件 1.1.安装file-saver 使用cnpm install file-sav ...

  6. php二维码存放json数据_PHP生成及获取JSON文件的方法

    本文实例讲述了PHP生成及获取JSON文件的方法.分享给大家供大家参考,具体如下: 首先定义一个数组,然后遍历数据表,把相应的数据放到数组中,最后通过json_encode()转化数组 json_en ...

  7. java 使用itext导出PDF文件,中文不显示问题解决

    之前写的java 使用itext 导出pdf 发现有个问题,在今天使用的时候,发现一个问题,就是当单元格中写中文的时候,导出来的pdf中文不显示. java 使用itext导出PDF文件,图片文字左右 ...

  8. 纯前端js直接导入导出json文件

    现在很多公司都有多个测试环境或者其他环境,有些配置信息在其他环境需要同样的信息,按照传统只能修改数据库对于新手小白来说只能求助于服务端了,现在前端也可以直接将当前的数据导出为json文件,然后在需要的 ...

  9. java 如何导出json文件_java导出json格式文件的示例代码

    本文介绍了java导出json格式文件的示例代码,分享给大家,具体如下: import java.io.File; import java.io.FileWriter; import java.io. ...

最新文章

  1. python语言怎么输入-Python input()函数:获取用户输入的字符串
  2. 【POJ3126 Prime Path】【POJ 3087 Shuffle'm Up】【UVA 11624 Fire!】【POJ 3984 迷宫问题】
  3. matlab获取目录中图像名称及路径的递归实现
  4. Algorithm:C++语言实现之求最大连续子数组(暴力法、分治法、分析法、动态规划法)
  5. xml文档的「?xml version=“1.0“ encoding=“UTF-8“?」 的作用?
  6. 如何使用 C# 在异步代码中处理异常
  7. Python开发利器之UliPad
  8. 改开源项目的一些心得
  9. MySQL 管理猿利器: MySQL ODBC for iPhone!
  10. ccs 移植创建新工程_CCS新工程创建与配置
  11. Scala 隐式转换和隐式参数
  12. 快速排序算法之我见(附上C代码)
  13. 程序员春节回家相亲指南
  14. 仿真工具NS3的基本知识
  15. 编译全志A31出现的错误
  16. 研究生学习生活日记——第十三次组会
  17. linux篇—Nginx反向代理负载均衡
  18. 2014网络红人排行榜
  19. 控制led亮度C语言程序,单片机pwm控制led亮度原理图
  20. win10系统下载中文版 64位32位 官方版​

热门文章

  1. ifix如何设画面大小_如何让你的视频又小又清晰?视频编码输出软件来了
  2. Docker---问题1:bash: vi: command not found/bash: vim: command not found
  3. 时间轴ui设计_我应该在UI设计上花更多时间吗?
  4. $.when.apply_When2Meet vs.LettuceMeet:UI和美学方面的案例研究
  5. HDU 4747 Mex
  6. 提高关键词排名的28个SEO技巧
  7. 在SQL Server2005中使用 .NET程序集
  8. Spark1.0.0 属性配置
  9. cdoj 1131 男神的礼物 区间dp
  10. zookeeper配置文件详解