• object 转换成json(转载)


    原创  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   +   ') ');
            }
    }转自:http://blog.csdn.net/lee576/archive/2008/04/06/2255091.aspx
  • 相关阅读:
    最高级的自律是享受孤独
    【黑马】交换两个变量的值
    字符串换行
    互联网视频直播/点播流媒体服务器使用http和rtmp做点播时有什么区别?
    视频互联网直播/点播服务器中关于内容分发CDN的相关问题汇总
    网页直播系统推流端和拉流端都有哪些环节?
    线上课堂教育行业选择互动直播时有哪些直播方案?
    自建视频流媒体服务器需要满足哪些条件?
    互联网直播点播平台在进行iframe直播分享时如何禁止本地视频自动播放?
    视频直播/点播流媒体服务器是否可以对接RTSP视频流?
  • 原文地址:https://www.cnblogs.com/johnwonder/p/1888526.html
Copyright © 2020-2023  润新知