目录

  • 使用工具
  • 使用说明
    • 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文件相关推荐

  1. Java生成Json文件添加到ZIP压缩并导出

    Java生成Json文件添加到ZIP压缩并导出 前言 代码说明 小结 前言 需要根据在前端选择的文件列表生产Json文件并导出Zip文件 代码说明 前端部分的方法: // 导出选中的文件exportF ...

  2. 使用java生成json文件

    需求:使用java代码生成一个json格式的文件,自定义相关内容 实现: 代码如下: package com.zt.posts.common.util; import lombok.extern.sl ...

  3. JAVA 实现 json文件的生成与导出

    本人对于java的语法不是很熟,算是半路突然入坑这种,之前实现过python生成json文件并导出.json文件: 怎料java的语法有些出入,现整理做个笔记: 推荐个Json格式化工具:json格式 ...

  4. Java 读取 JSON 文件转成 Map 对象

    Java 读取 JSON 文件转成 Map 对象 应用场景 待读取的外部 JSON 文件 Java 代码 读取结果 Gson 应用场景 Jar 包或 War 包引用一个外部文件作为项目运行的配置文件 ...

  5. 超详细的java生成excel文件并下载

    在网上随手一搜,可以搜到很多java生成excel文件相关的博客,但每个都有不同,核心点说清楚了,但具体运用的时候,相信大家或多或少都没法一次直接运用,这样每次去找并且运用的时候很费时间,所以这也是我 ...

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

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

  7. zipentry压缩乱码linux,java生成压缩文件 ZipEntry出现乱码的有关问题

    java生成压缩文件 ZipEntry出现乱码的问题 在项目中,一次导出的文件有好几个,而且文件内容比较大,最后考虑到把文件进行压缩在下载,开始试用JDK自带的ZIP压缩包时,ZipEntry ze ...

  8. java流与文件——java生成解压缩文件(夹)

    [0]README 0.1) 本文描述转自 http://blog.csdn.net/chenssy/article/details/9622171 , 旨在理解 java流与文件--java生成解压 ...

  9. qt先生成json文件后程序启动时读取json文件在一组数据模拟下正常,换一组数据就出现乱码

    提要 程序编号后自己模拟的数据程序在生成和解析json时都正常,但是换了一组数据,生成的json文件中部分中文乱码,且出现json文件的格式被混乱的现象. 效果 上述出现的不正确的json文件,如下: ...

最新文章

  1. ModuleNotFoundError: No module named ‘pandas._libs.tslibs.base‘
  2. python美国股票数据api_【美股量化00篇】Python获取新浪接口美股实时数据
  3. 软件开发者升职加薪的 8 项技能
  4. linux网页无法连接到服务器,linux – 无法连接到SMTP服务器
  5. Nacos(二)之概念
  6. 第三方模块config的使用
  7. jstl标签库基础教程及其使用代码
  8. 学python之路前的一些话
  9. 调试器无法终止一个或多个进程_EXCEL按多个分隔符号无法分列,没关系,一个M函数全搞定...
  10. linux如何清理文件系统,最佳Linux文件系统清理工具
  11. Fortran入门教程(二)——数据类型
  12. 前端和后端哪个工资更高呢?
  13. Quartz集群配置报错 This scheduler instance (XXXX) is still active but was recovered by another instance...
  14. 红帽linux 下qt 5.13.1 编译 mysql80驱动(内含升级gcc版本)
  15. 小程序渲染层网络层错误404
  16. SQL 每月新增,复购人数,复购率
  17. xml解析之dom、dom4j、SAX
  18. 【产品体验】明星衣橱
  19. 买一台 iPhone X,还是创建一家未来的独角兽? 1
  20. QGC地面站手把手教你改——如何添加跟随面板显示关键参数

热门文章

  1. java设定一个日期时间,加几分钟(小时或者天)后得到新的日期
  2. 第十二篇:实用的关联容器
  3. spring的HibernateDaoSupport以及HibernateTemplate和jdbcTemplate的选择问题
  4. 机器学习中的有监督学习,无监督学习,半监督学习
  5. Android视图绘制流程完全解析,带你一步步深入了解View(二)
  6. ACM模板--邻接矩阵 有向图 搜索算法
  7. shell命令的文本计算
  8. typedef的用法总结
  9. python五十:反射
  10. 阿里云企业服务器配置选择教程!