home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / Clusterz / Clusterz.swf / scripts / it / gotoandplay / smartfoxserver / json / JSONEncoder.as < prev    next >
Encoding:
Text File  |  2008-09-12  |  3.7 KB  |  139 lines

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