[原创]用递归写的一个object 转换成JSON的函数

这段时间可把JavaScript学得透彻了,发现还是非常好用的。

我在网上找了很多这样的例子,发现都写的好多,总感觉应该是很简单的,想想应该用递归调用一下应该不难吧,后来自己试了一下还算不难,看来学好算法还是有好处的,呵呵(自夸一下)
利用了Javascript的反射机制(JavaScript真是太强了)与递归的算法很方便就把功能实现了。

好了,共享出来给大家做个参考:
本方法支持子对象,数组等多种形式。字符、数字、布尔型变量都可以识别。

function  json_from_object(o)
{
    
if(o == null)
        
return 'null';
    
var s = '';
    
switch(typeof(o))
    
{
        
case 'object':
            
            
if(o.constructor == Array)        // checks if it is an array [,,,]
            {
                
                
for(var i=0; i<o.length; ++i)
                
{
                    s 
+= json_from_object(o[i]);

                    
if(i < o.length -1)
                        s 
+= ',';
                }


                
return '[' + s + ']';
            }

            
else
            
{
                
for(var p in o)
                
{
                    
if(typeof(o[p])!="function"){
                        s 
+= "'" + p +"':" + json_from_object(o[p]);
                        s 
+= ',';
                    }

                }

                
return '{' + s.substring(0,s.length-1+ '}';
            }

            
break;
        
case 'string':
            
return '\'' + o.replace(/(["\\])/g, '\\$1') + '\'';
        
default:
            
return String(o);
    }

}

调用实例也很简单:
function Test1() {
 this.sName = '';
 this.sCode = '';
 this.iNum = 0;
}
 
var obj=new Test1();
obj.sName = "lbq";
 obj.sCode = "1111";
 obj.iNum = 100; 
 alert( json_from_object(obj));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值