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()); }