-
函數實現
// Example usage: http://jsfiddle.net/q2gnX/
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 =(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;
}elseif(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;
};
// 該代碼片段來自於: http://www.sharejs.com/codes/javascript/5452
函數使用
-
參數 newlineAfterColonIfBeforeBraceOrBracket 標識大括號是跟在後面還是重起一行
-
formatJson({a: {b : 1}, c: 2})
"
{
"a": {
"b": 1
},
"c": 2
}
"
-
formatJson({a: {b : 1}, c: 2}, {newlineAfterColonIfBeforeBraceOrBracket: true})
"
{
"a":
{
"b": 1
},
"c": 2
}
"
-
JSON 展示
- div +
white-space: pre;
- textarea
$("#share")[0].style.height ="0"
$("#share")[0].style.height = $("#share")[0].scrollHeight +'px'