public class JsonTool {
/**
* json字符串的格式化,友好格式
*
* @param json json串
* @param fillStringUnit 填充字符,比如四个空格
* @return
*/
public static String formatJson(String json, String fillStringUnit) {
if (json == null || json.trim().length() == 0) {
return null;
}
int fixedLenth = 0;
ArrayList<String> tokenList = new ArrayList<String>();
{
String jsonTemp = json;
//预读取
while (jsonTemp.length() > 0) {
String token = getToken(jsonTemp);
jsonTemp = jsonTemp.substring(token.length());
token = token.trim();
tokenList.add(token);
}
}
for (int i = 0; i < tokenList.size(); i++) {
String token = tokenList.get(i);
int length = token.getBytes().length;
if (length > fixedLenth && i < tokenList.size() - 1 && tokenList.get(i + 1).equals(":")) {
fixedLenth = length;
}
}
StringBuilder buf = new StringBuilder();
int count = 0;
for (int i = 0; i < tokenList.size(); i++) {
String token = tokenList.get(i);
if (token.equals(",")) {
buf.append(token);
doFill(buf, count, fillStringUnit);
continue;
}
if (token.equals(":")) {
buf.append(" ").append(token).append(" ");
continue;
}
if (token.equals("{")) {
String nextToken = tokenList.get(i + 1);
if (nextToken.equals("}")) {
i++;
buf.append("{ }");
} else {
count++;
buf.append(token);
doFill(buf, count, fillStringUnit);
}
continue;
}
if (token.equals("}")) {
count--;
doFill(buf, count, fillStringUnit);
buf.append(token);
continue;
}
if (token.equals("[")) {
String nextToken = tokenList.get(i + 1);
if (nextToken.equals("]")) {
i++;
buf.append("[ ]");
} else {
count++;
buf.append(token);
doFill(buf, count, fillStringUnit);
}
continue;
}
if (token.equals("]")) {
count--;
doFill(buf, count, fillStringUnit);
buf.append(token);
continue;
}
buf.append(token);
//左对齐
if (i < tokenList.size() - 1 && tokenList.get(i + 1).equals(":")) {
int fillLength = fixedLenth - token.getBytes().length;
if (fillLength > 0) {
for(int j = 0; j < fillLength; j++) {
buf.append(" ");
}
}
}
}
return buf.toString();
}
private static String getToken(String json) {
StringBuilder buf = new StringBuilder();
boolean isInYinHao = false;
while (json.length() > 0) {
String token = json.substring(0, 1);
json = json.substring(1);
if (!isInYinHao &&
(token.equals(":") || token.equals("{") || token.equals("}")
|| token.equals("[") || token.equals("]")
|| token.equals(","))) {
if (buf.toString().trim().length() == 0) {
buf.append(token);
}
break;
}
if (token.equals("\\")) {
buf.append(token);
buf.append(json.substring(0, 1));
json = json.substring(1);
continue;
}
if (token.equals("\"")) {
buf.append(token);
if (isInYinHao) {
break;
} else {
isInYinHao = true;
continue;
}
}
buf.append(token);
}
return buf.toString();
}
private static void doFill(StringBuilder buf, int count, String fillStringUnit) {
buf.append("\n");
for (int i = 0; i < count; i++) {
buf.append(fillStringUnit);
}
}
}
分享到:
相关推荐
"json字符串格式化工具"是针对JSON数据进行美化和整理的工具,主要功能包括将紧凑的JSON字符串转换为易于阅读的格式,添加缩进、换行,以及高亮显示键值对等。这对于开发者调试API接口、查看JSON响应或者理解复杂...
标题中的"Json字符串格式化工具"指的是用于美化或格式化JSON数据的软件或在线服务。这类工具可以帮助开发者将原始的、紧凑的JSON字符串转换成可读性更强的格式,通过增加缩进和换行来清晰地展示数据结构,便于理解和...
json字符串格式化工具,不用安装,直接运行,美化json字符串,方便,快捷。json字符串格式化工具,不用安装,直接运行,美化json字符串,方便,快捷。json字符串格式化工具,不用安装,直接运行,美化json字符串,...
本项目提供的是一款Json字符串格式化规范化工具的源码,其主要功能包括对Json字符串进行美化格式化和压缩去除冗余空白字符。 首先,让我们深入理解Json的基本结构。Json由键值对构成,键必须用双引号括起,值可以是...
"JSON字符串格式化软件版"是指一种专为处理JSON格式数据而设计的桌面应用,它的主要功能是将杂乱无章的JSON字符串整理成清晰、易读的格式,帮助开发者更好地理解和调试数据。这类软件通常具备以下特性: 1. **美化...
"Json字符串格式化JsonView"这个主题主要关注如何通过JsonView工具来美化和解析JSON字符串。 JSON字符串通常是未格式化的,一行内包含所有的键值对,这在查看和理解复杂的数据结构时会带来不便。为了便于阅读和调试...
自动格式化json字符串自动格式化json字符串自动格式化json字符串
该工具提供各种方法格式化JSON数据,该工具还演示DLL的使用,该工具使用方便,该工具占用小,还有演示的列子对 Newtonsoft.Json.dll和JsonViewer.dll的使用 JSON源代码 JSON字符串格式化 JSON JSON类
Json 字符串 格式化输出成可阅读格式
java代码-使用java解决json字符串格式化的源代码 ——学习参考资料:仅用于个人学习使用!
3. **错误检测**:如果输入的JSON字符串格式有误,JSONView通常会识别出错误并提示用户,帮助开发者快速定位问题。 4. **搜索功能**:用户可以通过内置的搜索工具快速查找JSON数据中的特定关键字或值。 5. **快速...
软件介绍: HiJson 2.1.2是一款很好用的json格式化工具,本版本为中文汉化版本,绿色版无需安装直接使用,方便快捷,仅支持32位系统。用于格式化JSON字符串、节点查找、文本查找等。
Json字符串格式化和压缩,推荐理由 1.离线使用 2.支持json字符串的数据格式化和压缩,如:图1 3.支持数组元素的16进制转换,如:图2 4.支持数组元素不换行,如:图3 ...
一个有效的JSON字符串必须满足以下条件: 1. 数据是键值对,键和值之间用冒号分隔。 2. 键值对之间用逗号分隔。 3. 对象以大括号`{}`包围,数组以方括号`[]`包围。 4. 键必须是字符串,用双引号包围。 5. 值可以是...
基于jQuery的json格式化、高亮库 使用方式 引入jQuery [removed][removed] 注意:jQuery版本要求>=1.7.2 引入jsonFormater.js和jsonFormater.css [removed][removed] <link href="jsonFormater.css" type=...
在编程过程中,我们经常需要处理JSON字符串,包括生成、解析、美化和格式化。 "格式化JSON字符串"这个主题主要涉及的是将混乱的、一行显示的JSON数据转换为具有缩进和换行的易于阅读的形式。这对于调试和理解JSON...
在这个程序中,你可能会看到如何将一个`Video`对象序列化为JSON字符串,然后再反序列化回来。通过这样的操作,我们可以轻松地在应用程序之间传输和存储数据。 总之,Gson库为Java开发者提供了强大且易用的工具,...
1、JSON格式化:软件能够自动识别并格式化JSON数据,使其结构清晰,便于阅读和理解。同时,软件还支持手动调整JSON结构,以满足不同用户的需求。 2、字符串转BASE64:通过将字符串转换为BASE64编码,可以方便地在...