dead__

Squirrel JSON Class

Mar 9th, 2013
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. class JSON {
  2.     function decode(string) {
  3.         local _compile = compilestring("return " + stripLines(string));
  4.        
  5.         return _compile();
  6.     }
  7.    
  8.     function stripLines(string) {
  9.         local _split = split(string, "\r\n");
  10.         string = "";
  11.        
  12.         foreach(_string in _split) string += _string;
  13.        
  14.         return string;
  15.     }
  16.    
  17.     function encode(var) {
  18.         local _string;
  19.        
  20.         switch(typeof(var)) {
  21.             case "integer":
  22.                 return var.tointeger();
  23.            
  24.             case "bool":
  25.                 return var.tointeger() == 1 ? "true" : "false";
  26.  
  27.             case "string":
  28.                 return "\"" + var.tostring() + "\"";
  29.  
  30.             case "float":
  31.                 return var.tostring();
  32.                
  33.             case "array":
  34.                 _string = " [ ";
  35.  
  36.                 foreach(key, element in var) {
  37.                     local _string_2 = encode(element);
  38.                     if(_string_2 == null)
  39.                         return null;
  40.                     _string += _string_2 +(key+1 < var.len() ? ", " : "");
  41.                
  42.                 }
  43.                
  44.                 _string += " ]";
  45.  
  46.                 return _string;
  47.                
  48.             case "table":
  49.                 _string = " { ";
  50.                 local _i = 0;
  51.  
  52.                 foreach(key, value in var) {
  53.                     _i++;
  54.  
  55.                     local _key = encode(key);
  56.                     if(_key == null) {
  57.                         return null;
  58.                     }
  59.  
  60.                     local _value = encode(value);
  61.                     if(_value == null) {
  62.                         return null;
  63.                     }
  64.  
  65.                     _string += _key + ": " + _value +(_i < var.len() ? ", " : "");
  66.                 }
  67.                
  68.                 _string += " }";
  69.  
  70.                 return _string;
  71.  
  72.             default:
  73.                 return null;
  74.         }
  75.     }
  76. }
Advertisement
Add Comment
Please, Sign In to add comment