java生成Json文件
目录
- 使用工具
- 使用说明
- Website.java
- JsonFormatTool.java
- CreateFileUtil.java
- Main.java
- pom.xml
- 效果展示
转载: http://vvcat.tcode.top:78/details/22
使用工具
IDEA2018.2 JDK1.8
使用说明
JSONObject内部是用Hashmap来存储的,所以输出是按key的ASCII码排序来的,如果要让JSONObject按固定顺序(put的顺序)排列,可以修改JSONObject的定义HashMap改为LinkedHashMap。
下面代码不需要固定顺序,所以采用HashMap
Website.java
/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/12/8 23:44* @Version 1.0**/
public class Website {private String name;private String href;private String desc;private String logo;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getHref() {return href;}public void setHref(String href) {this.href = href;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public String getLogo() {return logo;}public void setLogo(String logo) {this.logo = logo;}public Website(String name, String href, String desc, String logo) {this.name = name;this.href = href;this.desc = desc;this.logo = logo;}public Website() {}
}
JsonFormatTool.java
import net.sf.json.JSONArray;import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/12/8 13:38* @Version 1.0**/
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();}}
CreateFileUtil.java
mport java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;/*** @Author ꧁ʚVVcatɞ꧂* @Date 2019/12/8 13:35* @Version 1.0**/
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;}}
Main.java
import net.sf.json.JSONArray;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class Main {public static void main(String[] args) {List<Website> agencyList1 = new ArrayList<Website>();agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,请带着梦想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,请带着梦想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,请带着梦想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,请带着梦想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));agencyList1.add(new Website("vvcat博客","http://vvcat.tcode.top:78/","世界很小,请带着梦想一起奔跑","http://vvcat.tcode.top:78/default/images/favicon.ico"));List<Object> agencyList = new ArrayList<Object>();Map<String, Object> agencyMap = new HashMap<>();agencyMap.put("这是标题1", agencyList1);agencyMap.put("这是标题2", agencyList1);agencyMap.put("这是标题3", agencyList1);agencyMap.put("这是标题4", "这是标题四的内容");agencyMap.put("这是标题5", "这是标题五的内容");agencyList.add(agencyMap);JSONArray jsonObject = JSONArray.fromObject(agencyList);String jsonString1 = jsonObject.toString();// 将以上HashMap中的内容转成字符串CreateFileUtil.createJsonFile(jsonString1, "/JAVA/Java基础/vvcat/src/main/resources", "json");}
}
CreateFileUtil类的createJsonFile方法
第一个参数为要写入文件的内容,第二个参数为路径,第三个参数为文件名
“/JAVA/Java基础/vvcat/src/main/resources” 这里是绝对路径,原路径"E:/JAVA/Java基础/vvcat/src/main/resources"由于是项目在E盘下的某个文件夹里创建,所以生成时自动生成在E盘下。在这里我省略了E:
“json” 为文件名,生成文件后,会自动生成.json后缀格式的文件
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net</groupId><artifactId>vvcat</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><name>A Camel Route</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencies><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.3</version></dependency><dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.1.1</version></dependency><dependency><groupId>net.sf.ezmorph</groupId><artifactId>ezmorph</artifactId><version>1.0.6</version></dependency><dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.2.3</version><classifier>jdk15</classifier><!-- jdk版本 --></dependency></dependencies><!-- 如果只是单独 拿这些代码测试,不要忘记加以下代码,否则会报错--><build><plugins><plugin><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins></build></project>
效果展示
[{"这是标题5":"这是标题五的内容","这是标题4":"这是标题四的内容","这是标题3":[{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"}],"这是标题2":[{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"}],"这是标题1":[{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"},{"name":"vvcat博客","logo":"http://vvcat.tcode.top:78/default/images/favicon.ico","href":"http://vvcat.tcode.top:78/","desc":"世界很小,请带着梦想一起奔跑"}]}]
java生成Json文件相关推荐
- Java生成Json文件添加到ZIP压缩并导出
Java生成Json文件添加到ZIP压缩并导出 前言 代码说明 小结 前言 需要根据在前端选择的文件列表生产Json文件并导出Zip文件 代码说明 前端部分的方法: // 导出选中的文件exportF ...
- 使用java生成json文件
需求:使用java代码生成一个json格式的文件,自定义相关内容 实现: 代码如下: package com.zt.posts.common.util; import lombok.extern.sl ...
- JAVA 实现 json文件的生成与导出
本人对于java的语法不是很熟,算是半路突然入坑这种,之前实现过python生成json文件并导出.json文件: 怎料java的语法有些出入,现整理做个笔记: 推荐个Json格式化工具:json格式 ...
- Java 读取 JSON 文件转成 Map 对象
Java 读取 JSON 文件转成 Map 对象 应用场景 待读取的外部 JSON 文件 Java 代码 读取结果 Gson 应用场景 Jar 包或 War 包引用一个外部文件作为项目运行的配置文件 ...
- 超详细的java生成excel文件并下载
在网上随手一搜,可以搜到很多java生成excel文件相关的博客,但每个都有不同,核心点说清楚了,但具体运用的时候,相信大家或多或少都没法一次直接运用,这样每次去找并且运用的时候很费时间,所以这也是我 ...
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...
http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...
- zipentry压缩乱码linux,java生成压缩文件 ZipEntry出现乱码的有关问题
java生成压缩文件 ZipEntry出现乱码的问题 在项目中,一次导出的文件有好几个,而且文件内容比较大,最后考虑到把文件进行压缩在下载,开始试用JDK自带的ZIP压缩包时,ZipEntry ze ...
- java流与文件——java生成解压缩文件(夹)
[0]README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件--java生成解压 ...
- qt先生成json文件后程序启动时读取json文件在一组数据模拟下正常,换一组数据就出现乱码
提要 程序编号后自己模拟的数据程序在生成和解析json时都正常,但是换了一组数据,生成的json文件中部分中文乱码,且出现json文件的格式被混乱的现象. 效果 上述出现的不正确的json文件,如下: ...
最新文章
- ModuleNotFoundError: No module named ‘pandas._libs.tslibs.base‘
- python美国股票数据api_【美股量化00篇】Python获取新浪接口美股实时数据
- 软件开发者升职加薪的 8 项技能
- linux网页无法连接到服务器,linux – 无法连接到SMTP服务器
- Nacos(二)之概念
- 第三方模块config的使用
- jstl标签库基础教程及其使用代码
- 学python之路前的一些话
- 调试器无法终止一个或多个进程_EXCEL按多个分隔符号无法分列,没关系,一个M函数全搞定...
- linux如何清理文件系统,最佳Linux文件系统清理工具
- Fortran入门教程(二)——数据类型
- 前端和后端哪个工资更高呢?
- Quartz集群配置报错 This scheduler instance (XXXX) is still active but was recovered by another instance...
- 红帽linux 下qt 5.13.1 编译 mysql80驱动(内含升级gcc版本)
- 小程序渲染层网络层错误404
- SQL 每月新增,复购人数,复购率
- xml解析之dom、dom4j、SAX
- 【产品体验】明星衣橱
- 买一台 iPhone X,还是创建一家未来的独角兽? 1
- QGC地面站手把手教你改——如何添加跟随面板显示关键参数