[原创]用递归写的一个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));
posted @ 2008-04-22 00:21  小草  阅读(1446)  评论(1编辑  收藏  举报
Google+