public static string FromJSON(string input)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("91010000");
            input = input.TrimStart('{');
            input = input.TrimEnd('}');
            input = input.Trim();
            string[] arr   = input.Split(", ");
            byte[]   bytes = BitConverter.GetBytes((uint)arr.Length);
            for (int i = 0; i < bytes.Length; i++)
            {
                sb.Append(bytes[i].ToString("X2"));
            }

            Queue <string> keys   = new Queue <string>(arr.Length);
            Queue <string> values = new Queue <string>(arr.Length);

            for (int i = 0; i < arr.Length; i++)
            {
                StringBuilder keysb = new StringBuilder();
                StringBuilder valsb = new StringBuilder();
                keysb.Append("010000000000000000000000");
                string[] dict = arr[i].Split(": ");
                bytes = BitConverter.GetBytes((uint)dict[0].Trim('\"').Length);
                for (int j = 0; j < bytes.Length; j++)
                {
                    keysb.Append(bytes[j].ToString("X2"));
                }
                keysb.Append(GMSWeird.JSONtoGMSstring(dict[0].Trim('\"')));
                if (dict[1].Contains("\""))
                {
                    valsb.Append("010000000000000000000000");
                    bytes = BitConverter.GetBytes((uint)dict[1].Trim('\"').Length);
                    for (int j = 0; j < bytes.Length; j++)
                    {
                        valsb.Append(bytes[j].ToString("X2"));
                    }
                    valsb.Append(GMSWeird.JSONtoGMSstring(dict[1].Trim('\"')));
                }
                else
                {
                    valsb.Append("00000000" + GMSDSMaps.JSONtoGMSdouble(dict[1]) + "00000000");
                }
                keys.Enqueue(keysb.ToString());
                values.Enqueue(valsb.ToString());
            }

            for (int i = 0; i < arr.Length; i++)
            {
                sb.Append(keys.Dequeue());
            }
            for (int i = 0; i < arr.Length; i++)
            {
                sb.Append(values.Dequeue());
            }
            return(sb.ToString());
        }
        public static string FromJSON(string input)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(input.Substring(0, input.IndexOf('{')));
            input = input.Remove(0, input.IndexOf('{'));
            input = input.TrimStart('{');
            input = input.TrimEnd('}');
            input = input.Trim();
            string[] arr   = input.Split(", ");
            byte[]   bytes = BitConverter.GetBytes((uint)arr.Length);
            for (int i = 0; i < bytes.Length; i++)
            {
                sb.Append(bytes[i].ToString("X2"));
            }

            for (int i = 0; i < arr.Length; i++)
            {
                sb.Append("01000000");
                string[] dict = arr[i].Split(": ");
                bytes = BitConverter.GetBytes((uint)dict[0].Trim('\"').Length);
                for (int j = 0; j < bytes.Length; j++)
                {
                    sb.Append(bytes[j].ToString("X2"));
                }
                sb.Append(GMSWeird.JSONtoGMSstring(dict[0].Trim('\"')));
                if (dict[1].Contains("\""))
                {
                    sb.Append("01000000");
                    bytes = BitConverter.GetBytes((uint)dict[1].Trim('\"').Length);
                    for (int j = 0; j < bytes.Length; j++)
                    {
                        sb.Append(bytes[j].ToString("X2"));
                    }
                    sb.Append(GMSWeird.JSONtoGMSstring(dict[1].Trim('\"')));
                }
                else if (dict[1] == "true" || dict[1] == "false")
                {
                    sb.Append("0D000000" + JSONtoGMSdouble((dict[1] == "true") ? "1" : "0"));
                }
                else
                {
                    sb.Append("00000000" + JSONtoGMSdouble(dict[1]));
                }
            }
            return(sb.ToString());
        }