Object转换成json的JS代码

                下面是通用的Object转换成json的JS代码
//用法
//var   obj=new   Object();
//obj.Name= 'Nams ';
//obj.Sex=1;
//JSON.serialize(obj);//will   get:   {Name: 'Nams ',Sex:1}

if(typeof   StringBuilder== 'undefined '){
             StringBuilder=function(initialText)
             {
                var   _parts   =   new   Array();                        
                            if   ((typeof(initialText)   ==    'string ')
                               &&(initialText.length   !=   0))
                                _parts.push(initialText);
                       
                          this.append   =   function(text)   {
                          if   ((text   ==   null)   ||   (typeof(text)   ==    'undefined '))   {
                                                 return;
                                     }
                                     if   ((typeof(text)   ==    'string ')   &&   (text.length   ==   0))   {
                                                 return;
                                     }                                    
                                     _parts.push(text);
                          }
                          this.appendLine   =   function(text)   {
                                     this.append(text);
                                     _parts.push( '/r/n ');
                          }
                          this.clear   =   function()   {
                                     _parts.clear();
                          }
                            this.isEmpty   =   function()   {
                                     return   (_parts.length   ==   0);
                            }
                          this.toString   =   function(delimiter)   {
                                     return   _parts.join(delimiter   ||    ' ');
                            }
             }
}
JSON   =   new   function()   {

             function   serializeWithBuilder(object,   stringBuilder)   {
                         var   i;
                         
                         switch   (typeof   object)   {
                         case    'object ':
                                     if   (object)   {
                                        if   (object.join)   {//if   is   array,   you   can   using   another   method   implement
                                                             stringBuilder.append( '[ ');
                                                             for   (i   =   0;   i    <   object.length;   ++i)   {
                                                                         if   (i   >    0)   {
                                                                                     stringBuilder.append( ', ');
                                                                         }
                                                stringBuilder.append(serializeWithBuilder(object[i],   stringBuilder));
                                                             }
                                                             stringBuilder.append( '] ');
                                                    }   
                                                             else   {
                                                if   (typeof   object.serialize   ==   'function ')   {
                                                                         stringBuilder.append(object.serialize());
                                                                         break;
                                                             }                                                
                                                             stringBuilder.append( '{ ');
                                                             var   needComma   =   false;
                                                             for   (var   name   in   object)   {
                                                                      if   (name.startsWith( '$ '))   {
                                                                                     continue;
                                                                         }
                                                                         var   value   =   object[name];
                                                if   (typeof   value   !=   'undefined '   &&   typeof   value   !=   'function ')   {
                                                                                     if   (needComma)   
      stringBuilder.append( ', ');                                                        
                                                                                     else   
                needComma   =   true;
                                                                                                                            
                                                        stringBuilder.append(serializeWithBuilder(name,   stringBuilder));
                                                                                     stringBuilder.append( ': ');
                                                        stringBuilder.append(serializeWithBuilder(value,   stringBuilder));
                                                                         }
                                                             }
                                                             stringBuilder.append( '} ');
                                                 }
                                     }
                                     else   {
                                                 stringBuilder.append( 'null ');
                                     }
                                     break;
                                     
                         case    'number ':
                                     if   (isFinite(object))   {
                                                 stringBuilder.append(String(object));
                                     }
                                     else   {
                                                 stringBuilder.append( 'null ');
                                     }
                                     break;
                                     
                         case    'string ':
                                     stringBuilder.append( ' " ');
                                     var   length   =   object.length;
                                     for   (i   =   0;   i    <   length;   ++i)   {
                                                 var   curChar   =   object.charAt(i);
                                                 if   (curChar   > =    '    ')   {
                                                          if   (curChar   ==    '// '   ||   curChar   ==    ' " ')   {
                                                                   stringBuilder.append( '// ');
                                                             }
                                                             stringBuilder.append(curChar);
                                                 }
                                                 else   {
                                                          switch   (curChar)   {
                                                                         case    '/b ':
                                                                                     stringBuilder.append( '//b ');
                                                                                     break;
                                                                         case    '/f ':
                                                                                     stringBuilder.append( '//f ');
                                                                                     break;
                                                                         case    '/n ':
                                                                                     stringBuilder.append( '//n ');
                                                                                     break;
                                                                         case    '/r ':
                                                                                     stringBuilder.append( '//r ');
                                                                                     break;
                                                                         case    '/t ':
                                                                                     stringBuilder.append( '//t ');
                                                                                     break;
                                                                         default:
                                                                                     stringBuilder.append( '//u00 ');
                                                        stringBuilder.append(curChar.charCodeAt().toString(16));
                                                             }
                                                 }
                                     }
                                     stringBuilder.append( ' " ');
                                     break;
    
                         case    'boolean ':
                                     stringBuilder.append(object.toString());
                                     break;
    
                         default:
                                     stringBuilder.append( 'null ');
                                     break;
                         }
             }

             this.serialize   =   function(object)   {   
                         var   stringBuilder   =   new   StringBuilder();
                         serializeWithBuilder(object,   stringBuilder);
                         return   stringBuilder.toString();
             }

             this.deserialize   =   function(data)   {
                         return   eval( '( '   +   data   +    ') ');
             }
}            

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值