假设,我有这样的一串json字符串数据:

{"id":"1","name":"a1","obj":{"id":11,"name":"a11","array":[{"id":111,"name":"a111"},{"id":112,"name":"a112"}]}}

我希望能格式化成下面的文本:

{
    "id":"1",
    "name":"a1",
    "obj":{
        "id":11,
        "name":"a11",
        "array":[{
            "id":111,
            "name":"a111"
        },
        {
            "id":112,
            "name":"a112"
        }]
    }
}

那么问题就来了,我需要通过一些判断来插入【回车】、制表符(tab)或者4个空格;现在根据上面的字符串总结规律如下:

1、当遇到 '{' 时,在其后面追加【回车】和 tab或者4个空格
2、当遇到 ',' 在其后面追加回车
3、当遇到 '}' 在其前面追加【回车】和 tab或者4个空格

还有一个,就是根据格式化后的文本,我们需要判断追加多少次的tab或者4个空格;

实现代码如下:

MainTest.java

import com.gdite.jsontool.utils.JSONTool;public class MainTest {public static void main(String[] args) {JSONTool tool = new JSONTool();String jsonStr = "{\"id\":\"1\",\"name\":\"a1\",\"obj\":{\"id\":11,\"name\":\"a11\",\"array\":[{\"id\":111,\"name\":\"a111\"},{\"id\":112,\"name\":\"a112\"}]}}";String fotmatStr = tool.stringToJSON(jsonStr);System.out.println(fotmatStr);}
}

JSONTool.java

public class JSONTool {private boolean isTab = true;public String stringToJSON(String strJson) {// 计数tab的个数int tabNum = 0;StringBuffer jsonFormat = new StringBuffer();int length = strJson.length();for (int i = 0; i < length; i++) {char c = strJson.charAt(i);if (c == '{') {tabNum++;jsonFormat.append(c + "\n");jsonFormat.append(getSpaceOrTab(tabNum));} else if (c == '}') {tabNum--;jsonFormat.append("\n");jsonFormat.append(getSpaceOrTab(tabNum));jsonFormat.append(c);} else if (c == ',') {jsonFormat.append(c + "\n");jsonFormat.append(getSpaceOrTab(tabNum));} else {jsonFormat.append(c);}}return jsonFormat.toString();}// 是空格还是tabpublic String getSpaceOrTab(int tabNum) {StringBuffer sbTab = new StringBuffer();for (int i = 0; i < tabNum; i++) {if (isTab) {sbTab.append('\t');} else {sbTab.append("    ");}}return sbTab.toString();}
}

结果如下:

Java格式化json格式文本数据相关推荐

  1. java jqgrid json格式_jqGrid 数据之 Json

    Json数据 需要定义jsonReader来跟服务器端返回的数据做对应,其默认值: · jsonReader : { ·      root: "rows", ·      pag ...

  2. Java解析JSON格式数据

    Java解析JSON格式的数据主要用到两个类JSONObject和JSONArray,这两个类在json-lib-2.4-jdk15包中,在使用JSONObject时除了需要这个包外还需要相关的依赖包 ...

  3. java 返回 json格式_java 如何返回json格式数据,需要技巧

    今天上午给同事调了半个小时的程序,最后发现是在后台代码的java返回json格式的数据出了个错误.因此就想到了广大的初学者一开始学习jquery的时候可能会遇到这个问题.现在我就把我的给大家分享一下, ...

  4. java异步请求显示数据格式_JSON(四)——异步请求中前后端使用Json格式的数据进行交互...

    json格式的数据广泛应用于异步请求中前后端的数据交互,本文主要介绍几种使用场景和使用方法. 一,json格式字符串 functionsentAjax(){ $.ajax({ type:'POST', ...

  5. Java如何处理前端传来的json格式的数据并将它转化为相应的对象,然后进行使用

    我是小康小白,一个平平无奇的Java小白.热爱有趣的文字,生活和远方. 前端传来json格式的数据传递而来,如何处理json格式的数据,如何将其转化为对象方便进行操作,并在Servlet页面中将数据以 ...

  6. java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据

    一.在PC Window(QT5版本) 1.1.构建URL 1.2.构建HTTP请求头 1.3.连接信号与操作,接收服务器回复的消息 槽函数这里我们要在头文件定义,然后把处理过程实现. void Ma ...

  7. QT解析 JSON 格式的数据

    QT解析 JSON 格式的数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数 ...

  8. Spring MVC--自定义HttpMessageConverter接收JSON格式的数据

    替换默认的Jackson,使用fastjson来处理json格式的数据. index.jsp <%@ page language="java" contentType=&qu ...

  9. Spring MVC--接收JSON格式的数据

    Spring mvc使用开源的Jackson包来处理JSON格式的请求或相应消息. index.jsp <%@ page language="java" contentTyp ...

最新文章

  1. 识别哈希算法类型hash-identifier
  2. 浅析网站URL优化有哪些问题需要注意呢?
  3. 【学术相关】进高校当老师有多难?非海归非 985 怎么办?
  4. dede config.chche.inc.php,dede/config.php · 辉辉菜/三强源码 - Gitee.com
  5. Java 联系Oracle 数据库
  6. vscode 分支列表刷新_分钟将vscode撸成小霸王
  7. gpio mysql_GPIO控制LED
  8. 【有意思的BUG】需要停止的进程
  9. [渝粤教育] 西南科技大学 现代汉语 在线考试复习资料
  10. C语言推荐书籍从入门到进阶带你走上大牛之路
  11. 半导体物理 第七章 金属半导体接触整流理论
  12. php里ajax提交form表单图片上传,PHPAJAXFORM提交图片上传并显示图片源码
  13. python自动化开发-[第九天]-异常处理、进程
  14. Elasticsearch[2.0] ☞ Java Client API ☞ Percolate API
  15. php tcpdf 没有头部,TCPDF使用总结 - 从头笑到尾的个人空间 - OSCHINA - 中文开源技术交流社区...
  16. selenium webdriver (python)的基本用法一
  17. java 与 c gzip_zlib和gzip生成不同的数据
  18. Spring Cloud入门 -- Ribbon服务消费者(Hoxton.SR5版)
  19. 微信小程序的简单介绍
  20. 利用js,实现网页上实时更新时间,需要时直接拿来用,不需要改动

热门文章

  1. 2020最新各大网站软件提交入口,软件发布入口汇总
  2. 《通用数据保护条例》(GDPR)系列解读五:出海欧洲,企业必须做好四大义务
  3. 浅析嵌入式系统之uboot详解(5.1)—时钟分频
  4. xenserver新增试验网卡
  5. 逻辑思维强的人适合学计算机不,逻辑思维强的人适合什么工作?
  6. php mysql 聊天室_聊天室phpmysql(二)_php
  7. 2021教师资格考试结构化面试:家长说你教的不好,怎么办?
  8. PL/SQL调试存储过程
  9. el-table高亮显示
  10. haoi2008木棍分割解题报告