您的位置:首页 > Web前端 > JavaScript

使用 js 美化 json

2017-09-26 14:51 639 查看
//json
美化
var
formatJson
=
function
(json,
options)
{
var
reg
=
null,
formatted
=
'',
pad
=
0,
PADDING
=
' ';
// one can also use '\t' or a different number of spaces

// optional settings
options
=
options
|| {};
// remove newline
where '{' or '[' follows ':'
options.newlineAfterColonIfBeforeBraceOrBracket
<
4000
span style="font-size:15px;color:rgb(232,226,183);background-color:rgb(0,0,0);">=
(options.newlineAfterColonIfBeforeBraceOrBracket
===
true)
?
true
:
false;
// use a space after
a colon
options.spaceAfterColon
=
(options.spaceAfterColon
===
false)
?
false
:
true;

// begin formatting...
if
(typeof
json
!==
'string')
{
// make sure we start
with the JSON as a string
json
=
JSON.stringify(json);
}
else
{
// is already a string,
so parse and re-stringify in order to remove extra whitespace
json
=
JSON.parse(json);
json
=
JSON.stringify(json);
}

// add newline before
and after curly braces
reg
=
/([\{\}])/g;
json
=
json.replace(reg,
'\r\n$1\r\n');

// add newline before
and after square brackets
reg
=
/([\[\]])/g;
json
=
json.replace(reg,
'\r\n$1\r\n');

// add newline after
comma
reg
=
/(\,)/g;
json
=
json.replace(reg,
'$1\r\n');

// remove multiple
newlines
reg
=
/(\r\n\r\n)/g;
json
=
json.replace(reg,
'\r\n');

// remove newlines
before commas
reg
=
/\r\n\,/g;
json
=
json.replace(reg,
',');

// optional formatting...
if
(!options.newlineAfterColonIfBeforeBraceOrBracket)
{
reg
=
/\:\r\n\{/g;
json
=
json.replace(reg,
':{');
reg
=
/\:\r\n\[/g;
json
=
json.replace(reg,
':[');
}
if
(options.spaceAfterColon)
{
reg
=
/\:/g;
json
=
json.replace(reg,
':');
}

$.each(json.split('\r\n'),
function
(index,
node)
{
var
i
=
0,
indent
=
0,
padding
=
'';

if
(node.match(/\{$/)
||
node.match(/\[$/))
{
indent
=
1;
}
else if
(node.match(/\}/)
||
node.match(/\]/))
{
if
(pad
!==
0)
{
pad
-=
1;
}
}
else
{
indent
=
0;
}

for
(i
=
0;
i
<
pad;
i++)
{
padding
+=
PADDING;
}

formatted
+=
padding
+
node
+
'\r\n';
pad
+=
indent;
});

return
formatted;
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: