public static string PrintJSON(JSONElement el) { string sortie = ""; switch (el.Type) { case JSONElement.JSONType.DIC: sortie += "{"; var count = el.key.Count - 1; for (int i = 0; i < count; i++) { sortie += el.key[i] + ":"; sortie += PrintJSON(el.data[i]); sortie += ","; } sortie += el.key[count] + ":"; sortie += PrintJSON(el.data[count]); sortie += "}"; break; case JSONElement.JSONType.BOOL: sortie += el.bool_value; break; case JSONElement.JSONType.NB: sortie += el.int_value; break; case JSONElement.JSONType.STR: sortie += el.string_value; break; case JSONElement.JSONType.LIST: sortie += "["; //Console.WriteLine(el.data.Count); var countlist = el.data.Count - 1; for (int i = 0; i < countlist; i++) { sortie += PrintJSON(el.data[i]); sortie += ","; } sortie += PrintJSON(el.data[countlist]); sortie += "]"; break; default: sortie += "PTDR nope"; break; } return(sortie); }
public static JSONElement SearchJSON(JSONElement element, string key) { for (int i = 0; i < element.key.Count; i++) { if (element.key[i] == key) { return(element.data[i]); } else if (element.data[i].Type == JSONElement.JSONType.DIC) { return(SearchJSON(element.data[i], key)); } } return(null); }
public void Add(string key, JSONElement data) { this.key.Add(key); this.data.Add(data); }
public static JSONElement ParseJSONString(string json, ref int index) { var len = json.Length; JSONElement obj = new JSONElement(JSONElement.JSONType.DIC); JSONElement val; bool cle = true; while (index < len && json[index] != '}') { if (json[index] == ':') { cle = false; index++; } else if (json[index] == ',') { cle = true; index++; } else { switch (GetJsonType(json[index])) { case JSONElement.JSONType.BOOL: val = new JSONElement(JSONElement.JSONType.BOOL); val.bool_value = ParseBool(json, ref index); index++; break; case JSONElement.JSONType.STR: if (cle) { obj.key.Add(ParseString(json, ref index)); } else { val = new JSONElement(JSONElement.JSONType.STR); val.string_value = ParseString(json, ref index); obj.data.Add(val); } index++; break; case JSONElement.JSONType.NB: val = new JSONElement(JSONElement.JSONType.NB); val.int_value = ParseInt(json, ref index); obj.data.Add(val); break; case JSONElement.JSONType.LIST: val = new JSONElement(JSONElement.JSONType.LIST); while (index < len && json[index] != ']') { EatBlank(json, ref index); switch (GetJsonType(json[index])) { case JSONElement.JSONType.BOOL: JSONElement b = new JSONElement(JSONElement.JSONType.BOOL); b.bool_value = ParseBool(json, ref index); val.data.Add(b); index++; break; case JSONElement.JSONType.STR: JSONElement s = new JSONElement(JSONElement.JSONType.STR); s.string_value = ParseString(json, ref index); val.data.Add(s); break; case JSONElement.JSONType.NB: JSONElement n = new JSONElement(JSONElement.JSONType.NB); n.int_value = ParseInt(json, ref index); val.data.Add(n); index++; break; case JSONElement.JSONType.DIC: JSONElement d = new JSONElement(JSONElement.JSONType.DIC); d = ParseJSONString(json, ref index); val.data.Add(d); break; default: index++; break; } } obj.data.Add(val); break; case JSONElement.JSONType.DIC: val = new JSONElement(JSONElement.JSONType.DIC); index++; val = ParseJSONString(json, ref index); obj.data.Add(val); break; default: val = new JSONElement(JSONElement.JSONType.NULL); obj.data.Add(val); break; } } } index++; return(obj); }