[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, '') );
*/

标签: JS

发表评论:

Powered by anycle 湘ICP备15001973号-1