Java格式化json格式文本数据
2016-08-26 22:30
567 查看
假设,我有这样的一串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
JSONTool.java
结果如下:
{"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(); } // 是空格还是tab public 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处理JSON格式数据的通用类
- Json数据格式解析示例 (语言:Java 包:org.json.jar)
- fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map
- java 解析 json格式数据。。。
- 一个java处理JSON格式数据的通用类
- Java类,生成Dojo_Gird表格的json数据格式
- Json-lib, 实现Java对象与JSON数据格式的互转
- 在项目中用java处理json格式的数据
- fastJson在java后台转换json格式数据探究(一)
- 关于Java解析json格式数据
- php 二维数组转 json文本 (jquery datagrid 数据格式)
- json格式数据转换为java数组
- java对象、List转为json格式的数据
- java 数组转换为json格式数据
- 一个java处理JSON格式数据的通用类(封装了一个class)
- 【转】一个java处理JSON格式数据的通用类
- Java中Json格式数据的应用
- java(jsp/servlet )取得客户端post过来的json格式数据(jquery等)
- 读取网址中json数据 转换为java格式