将JSON对象带有格式的写出到文件中
需求:将一个JSON对象写出到文件中,要求文件中的JSON数据带有简单的格式。代码的实现参考了Java算法中的栈处理括号匹配问题。好了,不多说了,下面是代码的实现。
代码:
1 package gemu.test.json; 2 3 import java.io.File; 4 import java.io.FileWriter; 5 import java.io.IOException; 6 import java.io.Writer; 7 8 import net.sf.json.JSONArray; 9 10 public class WritePrettyJSON { 11 12 public static void main(String[] args) throws IOException { 13 14 File file = new File("D:/json.json"); 15 String jsonStr = "[{a:1,b:{b1:[{a:2},{a:1}]},c:3},{a:1},{b:1}]"; 16 // String jsonStr = "{a:1,b:{b1:[{a:2},{a:1}]},c:3,a:2,b:2}"; 17 JSONArray jsonObj = JSONArray.fromObject(jsonStr); 18 // JSONObject jsonObj = JSONObject.fromObject(jsonStr); 19 20 char[] stack = new char[1024]; // 存放括号,如 "{","}","[","]" 21 int top = -1; 22 23 String string = jsonObj.toString(); 24 StringBuffer sb = new StringBuffer(); 25 char[] charArray = string.toCharArray(); 26 for (int i = 0; i < charArray.length; i++) { 27 char c = charArray[i]; 28 if ('{' == c || '[' == c) { 29 stack[++top] = c; // 将括号添加到数组中,这个可以简单理解为栈的入栈 30 sb.append(charArray[i] + "\n"); 31 for (int j = 0; j <= top; j++) { 32 sb.append("\t"); 33 } 34 continue; 35 } 36 if ((i + 1) <= (charArray.length - 1)) { 37 char d = charArray[i+1]; 38 if ('}' == d || ']' == d) { 39 top--; // 将数组的最后一个有效内容位置下标减 1,可以简单的理解为将栈顶数据弹出 40 sb.append(charArray[i] + "\n"); 41 for (int j = 0; j <= top; j++) { 42 sb.append("\t"); 43 } 44 continue; 45 } 46 } 47 if (',' == c) { 48 sb.append(charArray[i] + "\n"); 49 for (int j = 0; j <= top; j++) { 50 sb.append("\t"); 51 } 52 continue; 53 } 54 sb.append(c); 55 } 56 57 Writer write = new FileWriter(file); 58 write.write(sb.toString()); 59 write.flush(); 60 write.close(); 61 } 62 }
转载于:https://www.cnblogs.com/cb0327/p/6168753.html
将JSON对象带有格式的写出到文件中相关推荐
- 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
文章目录 一.学生管理系统 二.代码示例 一.学生管理系统 前两篇博客 [C 语言]文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 ) [C 语言 ...
- Flink 使用Table Api 读取文件数据并写出到文件中
前言 在上一篇我们演示了如何使用Flink 的Table Api 读取文件数据,并过滤特定字段的数据,本篇在上一篇的基础上,将从CSV文件中读取的数据重新输出到一个新的CSV文件中: 在实际业务场景下 ...
- pandas to_json为一行 一个json对象的格式
pandas to_json为一行 一个json对象的格式 有些时候我们并不想将数据输出为 标准的json格式,而是想以如下的格式输入: 即每行 是 一个json对象 那我们的代码应改为如下: 将 输 ...
- 基于IBS矩阵 在R语言中构建NJ进化树 写出nwk文件
构建系统发育树有很多方法,但是mega太慢,DNAman太丑. 当时,小Y还有30分钟进行工作汇报,眼瞅着来不及,在友人小湖的指点下,第一次在R语言上进行了进化树的绘制.随后下载nwk文件,在itol ...
- BigExcelWriter 写出的文件 ExcelUtil无法读取内容
BigExcelWriter 写出的文件 ExcelUtil无法读取内容 原因是sax读取的sheet是rid,BigWriter写出这个数字可能不为0,-1可以读取所有的sheet内容 下面是由Bi ...
- 以命令行的格式读取音频文件信息,并将读取的内容写到输出文件中
文章目录 c语言实现代码 运行结果 总结: 输入: wavinfo -i xxx.wav -o output.txt 输出:(格式规范)xxx=yyy rate(Hz)=16000 length=32 ...
- Java中使用字符流读取UTF-8和写出txt文件 乱码 问题
乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:
- python 读取txt文件中满足要求的行写到新文件中_python_文本文件里面随机抽取若干行,写入新的文本文件里面...
原博文 2012-07-25 16:36 − 天一直阴沉沉的,真想早点下班啊...... 1 #encoding=utf-8 2 import random 3 from sets import Se ...
- Ubuntu下如何将文件夹中图片索引写进txt文件中
方法之一 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt "find"后面跟的是当前文件下 ...
最新文章
- 穿上这件全球首款「隐形衣」,做这条街最「无脸」的仔;阿里给钱给资源,求解AI安全难题...
- 矩阵sum_推荐系统——从协同过滤到矩阵分解
- ❤️六W字《计算机基础知识》(六)(建议收藏)❤️
- vaex 处理海量数据_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!...
- C# GUID format参数说明
- 11.文件与文件系统的压缩与打包
- 51单片机交通信号灯c语言程序,89C51单片机交通灯程序
- php mysql敏感词_用PHP如何实现敏感词过滤
- VS2010专业版和旗舰版(中文版)下载
- 两轴插补速度怎么给定_两轴直线插补定位.doc
- python3.0下载官网_python下载 v3.7.0 官方正式版
- 电脑连无线无法访问云服务器,小编教你如何解决电脑无法连接无线网络
- redis c++接口
- 我眼中的Java大牛之孤尽老师
- 【OBS】OBS Studio 的安装、参数设置和录屏、摄像头使用教程
- 整理的java基础知识点笔记
- 超简单的_ps抠图_在线抠图工具_智能抠图_速抠图
- 百度地图 多轨迹 示例
- Windows下redis的启动
- linux投影使用方法,Ubuntu Linux投影的操作