需求:将一个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对象带有格式的写出到文件中相关推荐

  1. 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )

    文章目录 一.学生管理系统 二.代码示例 一.学生管理系统 前两篇博客 [C 语言]文件操作 ( 将结构体写出到文件中并读取结构体数据 | 将结构体数组写出到文件中并读取结构体数组数据 ) [C 语言 ...

  2. Flink 使用Table Api 读取文件数据并写出到文件中

    前言 在上一篇我们演示了如何使用Flink 的Table Api 读取文件数据,并过滤特定字段的数据,本篇在上一篇的基础上,将从CSV文件中读取的数据重新输出到一个新的CSV文件中: 在实际业务场景下 ...

  3. pandas to_json为一行 一个json对象的格式

    pandas to_json为一行 一个json对象的格式 有些时候我们并不想将数据输出为 标准的json格式,而是想以如下的格式输入: 即每行 是 一个json对象 那我们的代码应改为如下: 将 输 ...

  4. 基于IBS矩阵 在R语言中构建NJ进化树 写出nwk文件

    构建系统发育树有很多方法,但是mega太慢,DNAman太丑. 当时,小Y还有30分钟进行工作汇报,眼瞅着来不及,在友人小湖的指点下,第一次在R语言上进行了进化树的绘制.随后下载nwk文件,在itol ...

  5. BigExcelWriter 写出的文件 ExcelUtil无法读取内容

    BigExcelWriter 写出的文件 ExcelUtil无法读取内容 原因是sax读取的sheet是rid,BigWriter写出这个数字可能不为0,-1可以读取所有的sheet内容 下面是由Bi ...

  6. 以命令行的格式读取音频文件信息,并将读取的内容写到输出文件中

    文章目录 c语言实现代码 运行结果 总结: 输入: wavinfo -i xxx.wav -o output.txt 输出:(格式规范)xxx=yyy rate(Hz)=16000 length=32 ...

  7. Java中使用字符流读取UTF-8和写出txt文件 乱码 问题

    乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:

  8. python 读取txt文件中满足要求的行写到新文件中_python_文本文件里面随机抽取若干行,写入新的文本文件里面...

    原博文 2012-07-25 16:36 − 天一直阴沉沉的,真想早点下班啊...... 1 #encoding=utf-8 2 import random 3 from sets import Se ...

  9. Ubuntu下如何将文件夹中图片索引写进txt文件中

    方法之一 sudo find dress/ -name *.jpg | cut -d '/' -f2-3 > train_dress.txt "find"后面跟的是当前文件下 ...

最新文章

  1. 穿上这件全球首款「隐形衣」,做这条街最「无脸」的仔;阿里给钱给资源,求解AI安全难题...
  2. 矩阵sum_推荐系统——从协同过滤到矩阵分解
  3. ❤️六W字《计算机基础知识》(六)(建议收藏)❤️
  4. vaex 处理海量数据_爱了爱了!0.052 秒打开 100GB 数据,这个Python开源库火爆了!...
  5. C# GUID format参数说明
  6. 11.文件与文件系统的压缩与打包
  7. 51单片机交通信号灯c语言程序,89C51单片机交通灯程序
  8. php mysql敏感词_用PHP如何实现敏感词过滤
  9. VS2010专业版和旗舰版(中文版)下载
  10. 两轴插补速度怎么给定_两轴直线插补定位.doc
  11. python3.0下载官网_python下载 v3.7.0 官方正式版
  12. 电脑连无线无法访问云服务器,小编教你如何解决电脑无法连接无线网络
  13. redis c++接口
  14. 我眼中的Java大牛之孤尽老师
  15. 【OBS】OBS Studio 的安装、参数设置和录屏、摄像头使用教程
  16. 整理的java基础知识点笔记
  17. 超简单的_ps抠图_在线抠图工具_智能抠图_速抠图
  18. 百度地图 多轨迹 示例
  19. Windows下redis的启动
  20. linux投影使用方法,Ubuntu Linux投影的操作

热门文章

  1. 《scikit-learn》通过GridSearchCV来进行超参数优化
  2. ML《集成学习(三)Boosting和Adaboosting回归树》
  3. leetcode —— 40. 组合总和 II
  4. 自然语言处理 —— 困惑度
  5. OpenFlow网络中处理正常流量的工作流程
  6. 机器学习笔记033 | 主成分分析法(PCA)
  7. 彻底搞懂四元数(转载)
  8. ubuntu 修该rm命令使删除文件到回收站
  9. Unity 导出切片精灵
  10. Git远端库(GitHub)及Git流