首页 技术 正文
技术 2022年11月17日
0 收藏 938 点赞 4,254 浏览 3740 个字
// format json obj string
function format_json(txt, compress) {
var indentChar = '    ';
if (/^\s*$/.test(txt)) {
//alert('txt is empty');
return '';
}
try {
var data = eval('(' + txt + ')');
txt = txt.replace(new RegExp("\"{","gm"), "{").replace(new RegExp("}\"","gm"), "}");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\"");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\"");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\""); txt = txt.replace(new RegExp(" ","gm"), "");// console.log(txt);
data = eval('(' + txt + ')');
} catch (e) {
//alert('txt format error: '+e.description,'err');
return txt;
}
;
var draw = [], last = false, This = this, line = compress ? ''
: '<br/>', nodeCount = 0, maxDepth = 0;
var notify = function(name, value, isLast, indent, formObj) {
if (indent == 0) {
//draw.push('<table>');
}
nodeCount++;
for (var i = 0, tab = ''; i < indent; i++)
tab += indentChar;
tab = compress ? '' : tab;
maxDepth = ++indent;
if (value && value.constructor == Array) {
draw.push(tab + (formObj ? ('"' + name + '":') : '') + '['
+ line);
for (var i = 0; i < value.length; i++)
notify(i, value[i], i == value.length - 1, indent,
false);
draw.push(tab + ']' + (isLast ? line : (',' + line)));
} else if (value && typeof value == 'object') {
draw.push(tab + (formObj ? ('"' + name + '":') : '') + '{'
+ line);
var len = 0, i = 0;
for ( var key in value)
len++;
for ( var key in value)
notify(key, value[key], ++i == len, indent, true);
draw.push(tab + '}' + (isLast ? line : (',' + line)));
} else {
if (typeof value == 'string')
value = '"' + value + '"';
draw.push(tab + (formObj ? ('"' + name + '":') : '')
+ value + (isLast ? '' : ',') + line);
}
;
};
var isLast = true, indent = 0; notify('', data, isLast, indent, false);
return draw.join('');
}function addIndentBlank(indent) {
indentChar = '&nbsp;&nbsp;&nbsp;&nbsp;';
var ret = "";
for (var i = 0; i < indent; i++) {
ret += indentChar;
}
return ret;
}// format all string
function format_str(txt) {
if (/^\s*$/.test(txt)) {
//alert('txt is empty');
return '';
}
try {
//var data = eval('(' + txt + ')');
txt = txt.replace(new RegExp("\"{","gm"), "{").replace(new RegExp("}\"","gm"), "}"); // "{->{ }"->}
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\""); // \"->"
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\"");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\""); txt = txt.replace(new RegExp("\\\\\\\\r","gm"), "\\r");
txt = txt.replace(new RegExp("\\\\\\\\n","gm"), "\\n");
txt = txt.replace(new RegExp("\\\\\\\\r","gm"), "\\r");
txt = txt.replace(new RegExp("\\\\\\\\n","gm"), "\\n");
txt = txt.replace(new RegExp("\\\\\\\\r","gm"), "\\r");
txt = txt.replace(new RegExp("\\\\\\\\n","gm"), "\\n"); //txt = txt.replace(new RegExp("&nbsp;","gm"), ""); var draw = [];
var line = "<br/>";
var indent = 0;
var quoteCount = 0;
var quoteOddEven = 0; // Even count quote(") to deal, Odd is string
var containLeftBrace = false;
var preChar = '';
var nextChar = '';
for (var i = 0; i < txt.length; i++) {
current = txt.charAt(i);
try {
nextChar = txt.charAt(i + 1);
} catch (e) {
console.log(e);
}
switch (current) {
case '{':
containLeftBrace = true;
case '[': {
if (preChar == '\"') {
draw.push(current);
break;
}
if (quoteOddEven == 0) {
++indent;
draw.push(current);
draw.push(line);
draw.push(addIndentBlank(indent));
break;
} else {
draw.push(current);
break;
}
}
case '}':
case ']': {
if (nextChar == '\"') {
draw.push(current);
break;
}
if (quoteOddEven == 0) {
--indent;
draw.push(line);
draw.push(addIndentBlank(indent));
draw.push(current);
break;
} else {
draw.push(current);
break;
}
}
case ',': {
if (quoteOddEven == 0 && quoteCount > 0 && containLeftBrace) {
draw.push(current);
draw.push(line);
draw.push(addIndentBlank(indent));
break;
} else {
draw.push(current);
break;
}
}
case '\\': {
try {
next1 = txt.charAt(i+1);
next2 = txt.charAt(i+2);
next3 = txt.charAt(i+3);
// console.log(current + next1 + next2 + next3);
if ((next1 + "") == "r" && (current + next1 + next2 + next3) == "\\r\\n") {
draw.push(line);
draw.push(addIndentBlank(indent + 1));
i = i+3;
}
} catch(e) {
console.log(e);
}
break;
}
case '\"': {
quoteCount = quoteCount + 1;
quoteOddEven = (quoteOddEven + 1) % 2;
draw.push(current);
break;
}
default: {
draw.push(current);
}
}
preChar = current;
}// console.log('draw: ' + draw.join(''));
} catch (e) {
// alert('txt format error: '+e,'err');
return txt;
}
;
return draw.join('');
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902