code: function (o, sep, eq, serializeArray) {
              sep = sep || SEP;
              eq = eq || EQ;
              if (serializeArray === undefined) {
                  serializeArray = TRUE;
              }
              var buf = [], key, i, v, len, val,
                  encode = S.urlEncode;
              for (key in o) {
  
                  val = o[key];
                  key = encode(key);
  
                  // val is valid non-array value
                  if (isValidParamValue(val)) {
                      buf.push(key);
                      if (val !== undefined) {
                          buf.push(eq, encode(val + EMPTY));
                      }
                      buf.push(sep);
                  }
                  // val is not empty array
                  else if (S.isArray(val) && val.length) {
                      for (i = 0, len = val.length; i < len; ++i) {
                          v = val[i];
                          if (isValidParamValue(v)) {
                              buf.push(key, (serializeArray ? encode('[]') : EMPTY));
                              if (v !== undefined) {
                                  buf.push(eq, encode(v + EMPTY));
                              }
                              buf.push(sep);
                          }
                      }
                  }
                  // ignore other cases, including empty array, Function, RegExp, Date etc.
  
              }
              buf.pop();
              return buf.join(EMPTY);
          }
docs: Creates a serialized string of an array or object.
  
  for example:
  @example
  {foo: 1, bar: 2}    // -> 'foo=1&bar=2'
  {foo: 1, bar: [2, 3]}    // -> 'foo=1&bar=2&bar=3'
  {foo: '', bar: 2}    // -> 'foo=&bar=2'
  {foo: undefined, bar: 2}    // -> 'foo=undefined&bar=2'
  {foo: TRUE, bar: 2}    // -> 'foo=TRUE&bar=2'
  
  @param {Object} o json data
  @param {String} [sep='&'] separator between each pair of data
  @param {String} [eq='='] separator between key and value of data
  @param {Boolean} [serializeArray=true] whether add '[]' to array key of data
  @return {String}
  @member KISSY