JAVA生成并导出json文件

将一个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();}
}

 

 

 

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《ASP.NET Core 6框架揭秘》实例演示[02]:基于路由、MVC和gRPC的应用开发

ASP.NET Core可以视为一种底层框架&#xff0c;它为我们构建出了基于管道的请求处理模型&#xff0c;这个管道由一个服务器和多个中间件构成&#xff0c;而与路由相关的EndpointRoutingMiddleware和EndpointMiddleware是两个最为重要的中间件。MVC和gRPC开发框架就建立在路由基…

什么是 JWT -- JSON WEB TOKEN

什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519).该token被设计为紧凑且安全的&#xff0c;特别适用于分布式站点的单点登录&#xff08;SSO&#xff09;场景。JWT的声明一般被用来在身份提供者和服务提…

Re-installation failed due to different application signatures.

问题&#xff1a; 在虚拟设备上运行程序时提示安装失败。 [2010-08-08 00:38:30 - myApp] Re-installation failed due to different application signatures. [2010-08-08 00:38:30 - myApp] You must perform a full uninstall of the application. WARNING: This will remo…

【ArcGIS微课1000例】0024:ArcGIS如何连接文件夹、设认工作目录、默认地理数据库、相对路径与绝对路径?

ArcGIS软件在初次安装完成或者为了工作的方便,通常需要连接到指定的文件夹、设置默认工作路径,默认地理数据库、相对路径与绝对路径等。 文章目录 1. 文件夹连接2. 默认工作目录3. 默认地理数据库4. 相对路径与绝对路径1. 文件夹连接 在初次安装完ArcGIS时,默认没有文件夹连…

shell 用环境变量的值修改properties文件

假设有如下属性文件 demo.properties user.nametest user.password123456 ............................... 需求&#xff1a;先需要通过shell 脚本将 user.name 和 user.password 的value值替换为实际需要的用户名和密码&#xff0c; 将可以通过如下方式实现&#xff1a; sed …

【Spring Cloud】Redis缓存接入监控、运维平台CacheCloud

CacheCloud CacheCloud提供一个Redis云管理平台&#xff1a;实现多种类型(Redis Standalone、Redis Sentinel、Redis Cluster)自动部署、解决Redis实例碎片化现象、提供完善统计、监控、运维功能、减少运维成本和误操作&#xff0c;提高机器的利用率&#xff0c;提供灵活的伸缩…

[Win10应用开发] 使用 Windows 推送服务 (WNS)

前言 Windows 推送服务&#xff08;WNS&#xff09;也是 Win10 通知机制中的一种&#xff0c;今天与大家一起学习一下有关WNS的相关知识。使用 Windows 推送服务的前提是你需要有一个微软开发者账号&#xff0c;这样才能得到一些合法的密钥信息用于与WNS服务器完成通讯操作。 …

Windows 11 新版 25158 推送!全新搜索框和图标、小组件动态内容和通知标记

面向 Dev 频道的 Windows 预览体验成员&#xff0c;微软现已推送 Windows 11 预览版 Build 25158。主要变化1.微软宣布为 Windows 11 搜索引入全新视觉体验&#xff0c;由搜索框或重新设计的搜索图标呈现。目前该功能仅向部分 Windows 预览体验成员推出&#xff0c;将在未来向所…

Python之路【第一篇】:环境搭建

虚拟机安装 下载VMwareWorkstation以及centos,安装完VMwareWorkstation&#xff0c;创建一个虚拟机&#xff0c;然后在新创建的虚拟机上运行centos linux环境搭建 公司开发使用linux的原因&#xff1a;稳定、安全、开源 在虚拟机中使用centos这个版本&#xff0c;作为服务器端的…

【BIM入门实战】Revit创建地形的几种方法及优缺点

Revit在体量和场地选项卡的【地形表面】工具可以创建三维地形,有三种方法:放置点、指定点文件和导入实例文件、倾斜摄影点云技术和InfraWorks地形生成。 文章目录 1. 放置点2. 指定点文件3. 导入实例文件4. 倾斜摄影点云技术5. InfraWorks地形生成1. 放置点 放置点功能位于体…

2024年起重机司机(限门式起重机)证考试题库及起重机司机(限门式起重机)试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年起重机司机(限门式起重机)证考试题库及起重机司机(限门式起重机)试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作…

微服务架构下的统一身份认证和授权

一、预备知识 本文讨论基于微服务架构下的身份认证和用户授权的技术方案&#xff0c;在阅读之前&#xff0c;最好先熟悉并理解以下几个知识点&#xff1a; 微服务架构相关概念&#xff1a;服务注册、服务发现、API 网关身份认证和用户授权&#xff1a;SSO、CAS、OAuth2.0、JW…

使用vh来制作高度自适应页面和元素垂直居中

为什么80%的码农都做不了架构师&#xff1f;>>> vh单位 vh是CSS3中的一个长度单位&#xff0c;其值为&#xff1a;100vh 视窗高度。即如果窗口高度为500px&#xff0c;那么 1vh 5px。具体的值会随着浏览器视窗高度的改变而实时改变&#xff0c;因此可以利用这个单…

传智168期JavaEE struts2杜宏 day32~day33(2017年2月15日23:27:09)

struts2学习完毕&#xff0c;寒假学习效率还不错。 笔记链接 链接&#xff1a;http://pan.baidu.com/s/1boBJLVp 密码&#xff1a;wwl4转载于:https://www.cnblogs.com/huangtao1996/p/6403886.html

GitLab的安装、配置、使用

前言上周去参与“中国数字经济创新发展大会”了&#xff0c;然后又忙新项目的事情&#xff0c;博客又有一段时间没有更新&#xff0c;今天周一事情比较少&#xff0c;立刻开始写文&#xff0c;最近有挺多值得记录的东西~进入正文&#xff0c;最近我们搭了个Gitlab&#xff0c;并…

【BIM入门实战】Navisworks2018简体中文安装教程(附安装包下载)

Navisworks是Autodesk公司开发的一款三维模型可视化软件,它以轻量化的运行方式进行BIM成果的后期处理及整合,是一款非常实用的软件。基于Navisworks,项目的参建方可以在施工前进行模拟施工,以达到减少返工、缩短工期、提供经济效益的目的。 Navisworks同时支持4D和5D模拟,…

微软 Windows11 Build 22000.71 更新(KB5004252)发布

微软推出了一个全新的娱乐小工具。这一部件允许用户查看 Microsoft Store 中可用的新电影和精选电影。选择一部电影会引导用户到 Microsoft Store 查看有关该影片的更多信息。 7 月 16 日消息 今日凌晨&#xff0c;微软宣布向预览体验计划用户发布 Windows 11 Build22000.71 更…

Python入门教程之Python保留字符大全

Python中的保留字不能用作常数或变数&#xff0c;或任何其他标识符名称。所有 Python 的关键字只包含小写字母。 andexecnotassertfinallyorbreakforpassclassfromprintcontinueglobalraisedefifreturndelimporttryelifinwhileelseiswithexceptlambdayield转载于:https://blog.…

Linux操作系统基础解析之(五)——grep命令家族及正则表达式初识

grep号称文本处理三剑客之一&#xff0c;虽然说是三剑客中功能最少也是最简单的&#xff0c;但仍然不能小觑。 grep的全称为&#xff1a;Global search REgular expression and Print out the line&#xff0c;即&#xff1a;全面查找正则表达式并将匹配的行显示出来。 那么这…

Ubuntu16.04换源

Ubuntu16.04换源 转载于:https://www.cnblogs.com/xielisen/p/6404607.html