Java格式化json格式文本数据
假设,我有这样的一串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格式文本数据相关推荐
- java jqgrid json格式_jqGrid 数据之 Json
Json数据 需要定义jsonReader来跟服务器端返回的数据做对应,其默认值: · jsonReader : { · root: "rows", · pag ...
- Java解析JSON格式数据
Java解析JSON格式的数据主要用到两个类JSONObject和JSONArray,这两个类在json-lib-2.4-jdk15包中,在使用JSONObject时除了需要这个包外还需要相关的依赖包 ...
- java 返回 json格式_java 如何返回json格式数据,需要技巧
今天上午给同事调了半个小时的程序,最后发现是在后台代码的java返回json格式的数据出了个错误.因此就想到了广大的初学者一开始学习jquery的时候可能会遇到这个问题.现在我就把我的给大家分享一下, ...
- java异步请求显示数据格式_JSON(四)——异步请求中前后端使用Json格式的数据进行交互...
json格式的数据广泛应用于异步请求中前后端的数据交互,本文主要介绍几种使用场景和使用方法. 一,json格式字符串 functionsentAjax(){ $.ajax({ type:'POST', ...
- Java如何处理前端传来的json格式的数据并将它转化为相应的对象,然后进行使用
我是小康小白,一个平平无奇的Java小白.热爱有趣的文字,生活和远方. 前端传来json格式的数据传递而来,如何处理json格式的数据,如何将其转化为对象方便进行操作,并在Servlet页面中将数据以 ...
- java发送post请求json格式_Linux QT 4G发送HTTP POST请求发送JSON格式的数据
一.在PC Window(QT5版本) 1.1.构建URL 1.2.构建HTTP请求头 1.3.连接信号与操作,接收服务器回复的消息 槽函数这里我们要在头文件定义,然后把处理过程实现. void Ma ...
- QT解析 JSON 格式的数据
QT解析 JSON 格式的数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数 ...
- Spring MVC--自定义HttpMessageConverter接收JSON格式的数据
替换默认的Jackson,使用fastjson来处理json格式的数据. index.jsp <%@ page language="java" contentType=&qu ...
- Spring MVC--接收JSON格式的数据
Spring mvc使用开源的Jackson包来处理JSON格式的请求或相应消息. index.jsp <%@ page language="java" contentTyp ...
最新文章
- 识别哈希算法类型hash-identifier
- 浅析网站URL优化有哪些问题需要注意呢?
- 【学术相关】进高校当老师有多难?非海归非 985 怎么办?
- dede config.chche.inc.php,dede/config.php · 辉辉菜/三强源码 - Gitee.com
- Java 联系Oracle 数据库
- vscode 分支列表刷新_分钟将vscode撸成小霸王
- gpio mysql_GPIO控制LED
- 【有意思的BUG】需要停止的进程
- [渝粤教育] 西南科技大学 现代汉语 在线考试复习资料
- C语言推荐书籍从入门到进阶带你走上大牛之路
- 半导体物理 第七章 金属半导体接触整流理论
- php里ajax提交form表单图片上传,PHPAJAXFORM提交图片上传并显示图片源码
- python自动化开发-[第九天]-异常处理、进程
- Elasticsearch[2.0] ☞ Java Client API ☞ Percolate API
- php tcpdf 没有头部,TCPDF使用总结 - 从头笑到尾的个人空间 - OSCHINA - 中文开源技术交流社区...
- selenium webdriver (python)的基本用法一
- java 与 c gzip_zlib和gzip生成不同的数据
- Spring Cloud入门 -- Ribbon服务消费者(Hoxton.SR5版)
- 微信小程序的简单介绍
- 利用js,实现网页上实时更新时间,需要时直接拿来用,不需要改动
热门文章
- 2020最新各大网站软件提交入口,软件发布入口汇总
- 《通用数据保护条例》(GDPR)系列解读五:出海欧洲,企业必须做好四大义务
- 浅析嵌入式系统之uboot详解(5.1)—时钟分频
- xenserver新增试验网卡
- 逻辑思维强的人适合学计算机不,逻辑思维强的人适合什么工作?
- php mysql 聊天室_聊天室phpmysql(二)_php
- 2021教师资格考试结构化面试:家长说你教的不好,怎么办?
- PL/SQL调试存储过程
- el-table高亮显示
- haoi2008木棍分割解题报告