zoukankan      html  css  js  c++  java
  • [原创]用递归写的一个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));
  • 相关阅读:
    Cocos2d-x之Vector<T>
    Cocos2d-x之Array
    Cocos2d-x之Value
    Cocos2d-x之String
    Cocos2d-x中使用的数据容器类
    Cocos2d-x之Action
    Cocos2d-x之定时器
    Cocos2d-x之MessageBox
    Cocos2d-x之Log输出机制
    Cocos2d-x之事件处理机制
  • 原文地址:https://www.cnblogs.com/liubiqu/p/1164788.html
Copyright © 2011-2022 走看看