苗火 Nicholas
[JS]obj_echo一个把对象按格式输出的js插件
2015-11-25 萧


在做一些项目的时候要查看json格式数据,网上有一些在线解析工具,
不过是加了密的,用着觉得不爽,自己写了个。想要的拿去吧。



支持json,array等混排格式的对象。 



更多功能及发现BUG请留言 http://log.anycle.com


/**
* obj_echo.js
* @license Anycle v1.0
* (c) 2015-2015 Anycle
* License: MIT
* (c) 2015-2015 Anycle, Inc. http://log.anycle.com
*/

var G_TAB = '\t';
var G_ENT = '\n';

var encode_str = '{"keya":12341,"keybb":[{"a":11}, \
{"b":22},{"arr":[{"aa":223424,"bbbbb":242423423424}]}],"keycc":{"a":1,"b":2}}';

var obj = eval('('+encode_str+')');

var isArray = function(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}

var array_echo = function(obj, indent){
var ret = '';
var i = 0;
for(var p in obj){
switch(typeof(obj[p])){
case 'object':
if(isArray(obj[p])){
ret += ( (i>0)?(','+G_ENT):('') ) + indent
+ '['+G_ENT;
ret += array_echo(obj[p], indent + G_TAB );
ret += G_ENT + indent + ']';
}else{
ret += ( (i>0)?(','+G_ENT):('') ) + indent
+ '{'+G_ENT;
ret += json_echo(obj[p], indent + G_TAB );
ret += G_ENT + indent + '}';
}
break;
case 'number':
ret += ( (i>0)?(','+G_ENT):('') ) + indent + obj[p];
break;
case 'string':
ret += ( (i>0)?(','+G_ENT):('') ) + indent + obj[p] + '"';
break;
}
i++;

}
return ret;
}

var json_echo = function(obj, indent){
var ret = '';
var i = 0;
for(var p in obj){
switch(typeof(obj[p])){
case 'object':
if(isArray(obj[p])){
ret += ( (i>0)?(','+G_ENT):('') ) + indent
+ '"'+ p +'":'
+ '['+G_ENT;
ret += array_echo(obj[p], indent + G_TAB );
ret += G_ENT + indent + ']';
}else{
ret += ( (i>0)?(','+G_ENT):('') ) + indent
+ '"'+ p +'":'
+ '{'+G_ENT;
ret += json_echo(obj[p], indent + G_TAB );
ret += G_ENT + indent + '}';
}
break;
case 'number':
ret += ( (i>0)?(','+G_ENT):('') ) + indent + '"'+ p +'":'
+ obj[p];
break;
case 'string':
ret += ( (i>0)?(','+G_ENT):('') ) + indent + '"'+ p +'":"'
+ obj[p] + '"';
break;
}
i++;

}
return ret;
}

/*
alert( json_echo(obj, '') );
*/
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容