namespace libfcf; public static class Serializer { public static string SerializeObjectToJson(Dictionary obj) { string output = ""; int i = -1; if (obj.GetType() == typeof(Dictionary)) { output += "{"; foreach (KeyValuePair kvp in obj) { i++; if (kvp.Value.GetType() == typeof(List) || kvp.Value.GetType() == typeof(Dictionary)) { output += $"\"{kvp.Key}\": {SerializeObjectToJson((Dictionary)kvp.Value)}"; } else { if (kvp.Value.GetType() == typeof(string)) { output += $"\"{kvp.Key}\": \"{kvp.Value}\""; } else if (kvp.Value.GetType() == typeof(bool)) { var boolval = ((bool)kvp.Value).ToString().ToLower(); output += $"\"{kvp.Key}\": {boolval}"; } else { output += $"\"{kvp.Key}\": {kvp.Value}"; } } if (i != obj.Count - 1) { output += ", "; } } output += "}"; } else if (obj.GetType() == typeof(List)) { output += "["; foreach (object val in obj) { i++; if (val.GetType() == typeof(List)) { output += $"{SerializeObjectToJson((List)val)}"; } else if(val.GetType() == typeof(Dictionary)) { output += $"{SerializeObjectToJson((Dictionary)val)}"; } else { if (val.GetType() == typeof(string)) { output += $"\"{val}\""; } else if (val.GetType() == typeof(bool)) { output += ((bool)val).ToString().ToLower(); } else { output += val; } } if (i != obj.Count - 1) { output += ", "; } } output += "]"; } return output; } public static string SerializeObjectToJson(List obj) { string output = ""; int i = -1; output += "["; foreach (object val in obj) { i++; if (val.GetType() == typeof(List)) { output += $"{SerializeObjectToJson((List)val)}"; } else if(val.GetType() == typeof(Dictionary)) { output += $"{SerializeObjectToJson((Dictionary)val)}"; } else { if (val.GetType() == typeof(string)) { output += $"\"{val}\""; } else if (val.GetType() == typeof(bool)) { output += ((bool)val).ToString().ToLower(); } else { output += val; } } if (i != obj.Count - 1) { output += ", "; } } output += "]"; return output; } public static string SerializeObject(Dictionary obj) { string output = ""; int i = -1; output += "{"; foreach (KeyValuePair kvp in obj) { i++; if (kvp.Value.GetType() == typeof(List)) { output += $"{kvp.Key} = {SerializeObject((List)kvp.Value)}"; } else if(kvp.Value.GetType() == typeof(Dictionary)) { output += $"{kvp.Key} = {SerializeObject((Dictionary)kvp.Value)}"; } else { if (kvp.Value.GetType() == typeof(string)) { output += $"{kvp.Key} = \"{kvp.Value}\""; } else if (kvp.Value.GetType() == typeof(bool)) { var boolval = ((bool)kvp.Value).ToString().ToLower(); output += $"{kvp.Key} = {boolval}"; } else { output += $"{kvp.Key} = {kvp.Value}"; } } if (i != obj.Count - 1) { output += ", "; } } output += "}"; return output; } public static string SerializeObject(List obj) { string output = ""; int i = -1; output += "["; foreach (object val in obj) { i++; if (val.GetType() == typeof(List)) { output += $"{SerializeObject((List)val)}"; } else if(val.GetType() == typeof(Dictionary)) { output += $"{SerializeObject((Dictionary)val)}"; } else { if (val.GetType() == typeof(string)) { output += $"\"{val}\""; } else if (val.GetType() == typeof(bool)) { output += ((bool)val).ToString().ToLower(); } else { output += val; } } if (i != obj.Count - 1) { output += ", "; } } output += "]"; return output; } }