用法
var jf = new JsonFormatter(JSON.stringify(response));
jQuery("#show1").html("<pre>" + jf.getResult() + "</pre>");原始內容
/**
* ...
* @author shinder.lin
*/
function JsonFormatter(jsonString){
this.jsonString = jsonString;
this.spaces = 0;
this.spaceUnit = " ";
this.resultStr = "";
this.prevCh = "";
// *** getResult method ***
this.getResult = function(){
// alert("123");
// alert(this.findBracket);
if (this.jsonString) {
this.findBracket(this.jsonString);
}
if (this.resultStr.charAt(0) == "\n") {
this.resultStr = this.resultStr.slice(1);
}
return this.resultStr;
};
// *** findBracket method ***
this.findBracket = function(str){
var ch;
var leftStr;
var midStr;
var rightStr;
for (var i = 0; i < str.length; i++) {
ch = str.charAt(i);
if (ch == '[' || ch == '{' || ch == ',') {
leftStr = str.slice(0, i + 1);
rightStr = str.slice(i + 1);
break;
}
else
if (ch == '}' || ch == ']') {
leftStr = str.slice(0, i);
midStr = str.slice(i, i + 1);
rightStr = str.slice(i + 1);
break;
}
}
if (leftStr == null) {
return;
}
if (ch == ',' && (prevCh == '}' || prevCh == ']')) {
this.resultStr += leftStr;
}
else {
this.resultStr += this.getSpaces() + leftStr;
}
switch (ch) {
case '[':
case '{':
this.spaces++;
break;
case '}':
case ']':
this.spaces--;
break;
}
if (midStr != null) {
this.resultStr += this.getSpaces() + midStr;
}
prevCh = ch;
if (rightStr.length > 1) {
this.findBracket(rightStr);
}
else {
this.resultStr += "\n" + rightStr;
}
}
// *** getSpaces method ***
this.getSpaces = function(){
var str = "\n";
for (var i = 0; i < this.spaces; i++) {
str += this.spaceUnit;
}
return str;
}
}
沒有留言:
張貼留言