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

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

import java.io.File;

import java.io.FileWriter;

import java.io.Writer;

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();

// 格式化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;

}

}

json字符串格式化工具代码:

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();

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

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

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

相关文章

python执行shell命令、并获取执行过程信息_python执行使用shell命令方法

1. os.system(shell_command)直接在终端输出执行结果&#xff0c;返回执行状态0,1此函数会启动子进程&#xff0c;在子进程中执行command&#xff0c;并返回command命令执行完毕后的退出状态&#xff0c;如果command有执行内容&#xff0c;会在标准输出显示。这实际上是使用C标…

java安全框架有哪些_Java开发必备教程-细说Spring Security安全框架

一、Spring Security介绍spring security 是基于 spring 的安全框架。它提供全面的安全性解决方案&#xff0c;同时在 Web 请求级和方法调用级处理身份确认和授权。在 Spring Framework 基础上&#xff0c;spring security 充分利用了依赖注入(DI)和面向切面编程(AOP)功能&…

无法读取源文件或磁盘_raid磁盘阵列作用

磁盘阵列的作用&#xff1a;1.提高传输速率。RAID通过在多个磁盘上同时存储和读取数据来大幅提高存储系统的数据吞吐量(Throughput)。在RAID中&#xff0c;可以让很多磁盘驱动器同时传输数据&#xff0c;而这些磁盘驱动器在逻辑上又是一个磁盘驱动器&#xff0c;所以使用RAID可…

java none怎么用tomcat_JavaWeb学习——在Eclipse里使用Tomcat

JavaWeb学习——在Eclipse里使用Tomcat摘要&#xff1a;本文主要学习了如何在Eclipse里使用Tomcat服务器。添加Tomcat打开Eclipse的配置页面&#xff0c;点击菜单上的“Window”&#xff0c;在下拉菜单中找到“Preferences”&#xff1a;找到运行环境的配置页面&#xff0c;如果…

mysql b 树原因_复习系列之数据库(四):MySQL为什么采用B+树作为索引结构?

MySQL中数据是索引组织表&#xff0c;即表中数据按照主键顺序存放。所以就可以基于索引这种数据结构实现一些高级算法&#xff0c;来提高检索效率。常见的查找算法顺序查找&#xff1a;复杂度O(n)&#xff0c;在数据量大时&#xff0c;效率很低二分查找&#xff1a;在有序为前提…

关于python类_python中类的总结

1、 类中的方法在类里主要有三种方法&#xff1a;a、普通方法&#xff1a;在普通方法定义的时候&#xff0c;需要一个对象的实例参数&#xff0c;从而在类中定义普通方法的时候&#xff0c;都必须传送一个参数self&#xff0c;那么这个参数也就是objectb、类方法&#xff1a;在…

折线图 java_java报表折线图

package com.potevio.rnd.tobacco.mine;import java.util.Map;/*** description 数据BEAN* author Zhou-Jingxian*/public class Bean {private String goods_name ;private Map priceindexMap;public String getGoods_name() {return goods_name;}public void setGoods_name(S…

windows无法检索有关这台计算机上的磁盘信息_磁盘镜像软件OO DiskImage Pro 15.5介绍及安装教程...

Active Disk Image是一种磁盘映像软件&#xff0c;可以精确复制任何PC磁盘(HDD&#xff0c;SSD&#xff0c;USB&#xff0c;CD&#xff0c;DVD&#xff0c;Blu-ray等)并将其存储在文件夹中。磁盘映像可用于备份&#xff0c;PC升级或磁盘复制。万一计算机出现故障&#xff0c;可…

java中的抽象方法_Java中的抽象类和抽象方法

###Java中的抽象方法和抽象类&#xff1a;abstract:关键字&#xff0c;可以用于修饰方法和类抽象方法&#xff1a;不同类的方法是相似的&#xff0c;但是具体实现的内容又不太一样&#xff0c;没有具体的方法体。抽象类&#xff1a;有抽象方法的类必须是抽象类类与抽象类的关系…

word手写字体以假乱真_Word小技巧|打印作文草稿纸

前期介绍过一些Word使用中的小技巧&#xff0c;例如WORD快速查找的2个小技巧 https://www.iappi.cn/2019_08/20191147.html&#xff0c;使用Word创建九宫格图像 https://www.iappi.cn/2019_07/20191064.html 等。今天再分享一个打印作文草稿纸的技巧。很多时候需要规范写好作文…

java 判断范围_java判断一个点是否在一个围栏范围内

应项目需求&#xff0c;需要判断一个点所属哪个区域范围内管辖&#xff0c;突然想起来三年前做了个外卖的项目里面有个功能&#xff0c;判断用户是否在商家自己划的配送范围内&#xff0c;又找回来以前的代码来看了下&#xff0c;所以在此处记录一下DataNoArgsConstructorAllAr…

概要设计说明书_没有什么比牙签更好的设计了

牙签是设计公理的典型例子&#xff0c;形式服从功能。它的形式和功能是单一的、紧凑的、轻质的、可生物降解的、可持续的实体。不证自明的&#xff1a;它的形状是设计功能的缩影&#xff0c;同时作为手柄和说明书。它的形状不仅告诉你如何握住和使用它&#xff0c;而且告诉你把…

java项目log4j_java项目测试log4j

一、基础入门1.1 下载安装下载相应的log4j-1.2.15.jar(也可以下载其他的版本)提供一个下载jar包的网站(http://search.maven.org/)新建一个log4j.properties文件&#xff1a;#配置根Loggerlog4j.rootLoggerinfo, RF #info代表的是日志输出的级别log4j.appender.RForg.apache.lo…

webrtc 代码_英特尔开源WebRTC开发套件OWT

为了抢占实时视频的巨大市场&#xff0c;英特尔开源了WebRTC开发套件&#xff0c;并将其命名为Open WebRTC Toolkit (OWT)。由于实时视频编码、转码需要大量的计算资源&#xff0c;Open WebRTC Toolkit将为英特尔带来巨大的潜在商业回报。文 / Ant去年在旧金山举办的2018 Krank…

零基础自学java_零基础学Java——小白的Java之路(4)

方法方法是一段可以重复调用的代码块&#xff0c;这个代码块实现了某个功能&#xff0c;当我们的程序中需要这一个功能的时候&#xff0c;调用这个方法即可&#xff0c;不再需要重复书写这个功能的代码。方法的定义格式public static ( ,... ){方法体&#xff1b;[return 表达值…

异步fifo_跨时钟域同步(异步FIFO)

本文使用 Zhihu On VSCode 创作并发布跨时钟域同步&#xff08;异步FIFO&#xff09;之前学习了跨时钟域下的单bit信号同步的方法&#xff0c;这些单bit信号多是作为控制信号或者标志信号来使用&#xff0c;再实际的项目中&#xff0c;处理多bit数据也是十分常见的&#xff0c;…

think python 2ed_Think Python 2ed 笔记(二)

第六章 有返回值的函数1. 返回值&#xff1a;没有返回值的函数返回None2. 增量式开发&#xff1a;增量式开发的目标&#xff0c;是通过每次只增加和测试少量代码&#xff0c;来避免长时间的调试。该函数的最终版不会在运行时显示任何东西&#xff0c;仅仅返回一个值。 我们之前…

dumpbin发现没有入口函数_JavaScript基础之入口函数-2020版

JavaScript基础之入口函数-2020版1.入口函数window.onload function(){ 内部放js}这个函数的意思就是说&#xff0c;当我们页面加载完毕之后(就是说等页面的结构 样式 节点等加载完毕)&#xff0c;采取执行函数体里面的js部分。也就是说可以使用此方法&#xff0c;就不用考…

java相等_Java 判断相等

1.除 float 和 double 外的原始数据类型 : 使用 long a (long) 1234567890;long b (long) 1234567890;if (a b) {System.out.println("基本数据类型相等");}2.包装类使用 equals 或者转换为基本数据类型再用 Long a (long) 1234567890;Long b (long) 1234567890;i…

农委系统先进集体推荐报告_来自司法行政的他们,荣获上海档案系统表彰!

为表彰先进、弘扬正气&#xff0c;激发全市各级档案部门和广大档案工作者的积极性和创造性&#xff0c;进一步推进上海档案事业创新发展&#xff0c;经各地区、各部门、各单位民主推荐&#xff0c;市人力资源社会保障局和市档案局审核同意&#xff0c;决定授予50家集体“上海市…