我一个后台开发人员,要自己敲公司数据管理系统对应接口的前端部分。研究这前端问题好几个小时,结果写了这个函数解决了我的问题:
function JSON_Format(str) {
//判空
if (str == null) {
return "查询结果为空";
}
//栈-用于括号匹配
var stack = [];
//新格式化JSON字符串
var tmpStr = '';
//原始JSON长度
var len = str.length;
//遍历每一个字符
for (let i = 0; i < len; i++) {
//当遇到结构块起始结构
if (str[i] == '{' || str[i] === '[') {
//起始结构后面直接换行
tmpStr += str[i] + "\n";
//入栈
stack.push(str[i]);
//这里的意思是结构块起始的下一行开始就会有一个缩进,缩进量与遇到的结构块起始符个数成正比1:1
tmpStr += "\t".repeat(stack.length);
}
//当遇到结构块结束符
else if (str[i] == ']' || str[i] === '}') {
//因为本身JSON格式是固定的,所以括号一定是成对的,这里先不考虑错误的json数据
//遇到结束符就退栈,
stack.pop();
//结束符本身输出到下一行,并减少一个缩进
tmpStr += "\n"+"\t".repeat(stack.length) + str[i];
}
//当遇到逗号的时候
else if (str[i] == ',') {
//逗号后方直接换行,以及下一行的缩进处理
tmpStr += str[i] + "\n" + "\t".repeat(stack.length);
}
else {
//其他字符直接复制
tmpStr += str[i];
}
}
return tmpStr;
}
大家拿去用吧!!! 哈哈哈~