home *** CD-ROM | disk | FTP | other *** search
/ Computer Active 2010 August / CA08.iso / Multimedija / shufflr.air / ShufflrClient.swf / scripts / com / adobe / serialization / json / JSONEncoder.as < prev    next >
Encoding:
Text File  |  2010-06-23  |  4.1 KB  |  152 lines

  1. package com.adobe.serialization.json
  2. {
  3.    import flash.utils.describeType;
  4.    
  5.    public class JSONEncoder
  6.    {
  7.       private var jsonString:String;
  8.       
  9.       public function JSONEncoder(param1:*)
  10.       {
  11.          super();
  12.          this.jsonString = this.convertToString(param1);
  13.       }
  14.       
  15.       private function escapeString(param1:String) : String
  16.       {
  17.          var _loc3_:String = null;
  18.          var _loc6_:String = null;
  19.          var _loc7_:String = null;
  20.          var _loc2_:* = "";
  21.          var _loc4_:Number = param1.length;
  22.          var _loc5_:int = 0;
  23.          while(_loc5_ < _loc4_)
  24.          {
  25.             _loc3_ = param1.charAt(_loc5_);
  26.             switch(_loc3_)
  27.             {
  28.                case "\"":
  29.                   _loc2_ += "\\\"";
  30.                   break;
  31.                case "\\":
  32.                   _loc2_ += "\\\\";
  33.                   break;
  34.                case "\b":
  35.                   _loc2_ += "\\b";
  36.                   break;
  37.                case "\f":
  38.                   _loc2_ += "\\f";
  39.                   break;
  40.                case "\n":
  41.                   _loc2_ += "\\n";
  42.                   break;
  43.                case "\r":
  44.                   _loc2_ += "\\r";
  45.                   break;
  46.                case "\t":
  47.                   _loc2_ += "\\t";
  48.                   break;
  49.                default:
  50.                   if(_loc3_ < " ")
  51.                   {
  52.                      _loc6_ = _loc3_.charCodeAt(0).toString(16);
  53.                      _loc7_ = _loc6_.length == 2 ? "00" : "000";
  54.                      _loc2_ += "\\u" + _loc7_ + _loc6_;
  55.                   }
  56.                   else
  57.                   {
  58.                      _loc2_ += _loc3_;
  59.                   }
  60.                   break;
  61.             }
  62.             _loc5_++;
  63.          }
  64.          return "\"" + _loc2_ + "\"";
  65.       }
  66.       
  67.       private function arrayToString(param1:Array) : String
  68.       {
  69.          var _loc2_:* = "";
  70.          var _loc3_:int = 0;
  71.          while(_loc3_ < param1.length)
  72.          {
  73.             if(_loc2_.length > 0)
  74.             {
  75.                _loc2_ += ",";
  76.             }
  77.             _loc2_ += this.convertToString(param1[_loc3_]);
  78.             _loc3_++;
  79.          }
  80.          return "[" + _loc2_ + "]";
  81.       }
  82.       
  83.       public function getString() : String
  84.       {
  85.          return this.jsonString;
  86.       }
  87.       
  88.       private function objectToString(param1:Object) : String
  89.       {
  90.          var value:Object = null;
  91.          var key:String = null;
  92.          var v:XML = null;
  93.          var o:Object = param1;
  94.          var s:String = "";
  95.          var classInfo:XML = describeType(o);
  96.          if(classInfo.@name.toString() == "Object")
  97.          {
  98.             for(key in o)
  99.             {
  100.                value = o[key];
  101.                if(!(value is Function))
  102.                {
  103.                   if(s.length > 0)
  104.                   {
  105.                      s += ",";
  106.                   }
  107.                   s += this.escapeString(key) + ":" + this.convertToString(value);
  108.                }
  109.             }
  110.          }
  111.          else
  112.          {
  113.             for each(v in classInfo..*.(name() == "variable" || name() == "accessor"))
  114.             {
  115.                if(s.length > 0)
  116.                {
  117.                   s += ",";
  118.                }
  119.                s += this.escapeString(v.@name.toString()) + ":" + this.convertToString(o[v.@name]);
  120.             }
  121.          }
  122.          return "{" + s + "}";
  123.       }
  124.       
  125.       private function convertToString(param1:*) : String
  126.       {
  127.          if(param1 is String)
  128.          {
  129.             return this.escapeString(param1 as String);
  130.          }
  131.          if(param1 is Number)
  132.          {
  133.             return isFinite(param1 as Number) ? param1.toString() : "null";
  134.          }
  135.          if(param1 is Boolean)
  136.          {
  137.             return !!param1 ? "true" : "false";
  138.          }
  139.          if(param1 is Array)
  140.          {
  141.             return this.arrayToString(param1 as Array);
  142.          }
  143.          if(param1 is Object && param1 != null)
  144.          {
  145.             return this.objectToString(param1);
  146.          }
  147.          return "null";
  148.       }
  149.    }
  150. }
  151.  
  152.