我们知道,在js中JSON.parse(xxx)可以将符合json规则的字符串xxx转换成js对象,反过来,可以通过JSON.stringify(xxx)将json对象转换成js字符串。
可能有这样的需求,将json对象在web界面上以友好的方式展现出来,说得直白一点,就是带缩进的格式展示,而这个需求是JSON.parse()无法实现的,我们需要自己实现这个
功能。
思路很简单:遍历json对象的各个属性,进行缩进、换行拼接字符串,如果属性也是json对象,那么就多缩进一层,显然,这是一个递归。
下面直接给出代码(缩进采用\t,拼接字符串时处理了双引号这一种特殊字符,其他的特殊字符也可以参考双引号进行处理)
function formatJson(json, indent, returnStr) {
var padding='\t';
var type = typeof json;
if(type=='object'){
if(json instanceof Array){
if(indent >0){
var pad = "";
for(var i=0;i<indent;i++){
pad += padding;
}
returnStr +=pad;
}
returnStr +='[\r\n';
var pad = "";
for(var i=0;i<indent+1;i++){
pad += padding;
}