/// <summary>
        /// Converts a Hashtable / ArrayList / Dictionary(string,string) object into a JSON string
        /// </summary>
        /// <param name="json">A Hashtable / ArrayList</param>
        /// <returns>A JSON encoded string, or null if object 'json' is not serializable</returns>
        public static string jsonEncode(object json)
        {
            var builder = new StringBuilder(BUILDER_CAPACITY);
            var success = XMiniJSON.serializeValue(json, builder);

            return(success ? builder.ToString() : null);
        }
        /// <summary>
        /// Parses the string json into a value
        /// </summary>
        /// <param name="json">A JSON string.</param>
        /// <returns>An ArrayList, a Hashtable, a double, a string, null, true, or false</returns>
        public static object jsonDecode(string json)
        {
            // save the string for debug information
            XMiniJSON.lastDecode = json;

            if (json != null)
            {
                char[] charArray = json.ToCharArray();
                int    index     = 0;
                bool   success   = true;
                object value     = XMiniJSON.parseValue(charArray, ref index, ref success);

                if (success)
                {
                    XMiniJSON.lastErrorIndex = -1;
                }
                else
                {
                    XMiniJSON.lastErrorIndex = index;
                }

                return(value);
            }
            else
            {
                return(null);
            }
        }