def encode(x)
    case x
    when Hash    then objenc(x)
    when Array   then arrenc(x)
    else
      raise Error, 'root value must be an Array or a Hash'
    end
  end
def encode(x)
    case x
    when Hash    then objenc(x)
    when Array   then arrenc(x)
    else
      raise Error, 'root value must be an Array or a Hash'
    end
  end
Encodes x into a json text. It may contain only
 Array, Hash, String, Numeric, true, false, nil.
 (Note, this list excludes Symbol.)
 X itself must be an Array or a Hash.
 No other value can be encoded, and an error will
 be raised if x contains any other value, such as
 Nan, Infinity, Symbol, and Proc, or if a Hash key
 is not a String.
 Strings contained in x must be valid UTF-8.