using System.Collections.Generic; using System.Text; namespace FastJSON { internal static class Formatter { public static string Indent = " "; public static void AppendIndent(StringBuilder sb, int count) { for (; count > 0; --count) sb.Append(Indent); } public static string PrettyPrint(string input) { var output = new StringBuilder(); int depth = 0; int len = input.Length; char[] chars = input.ToCharArray(); for (int i = 0; i < len; ++i) { char ch = chars[i]; if (ch == '\"') // found string span { bool str = true; while (str) { output.Append(ch); ch = chars[++i]; if (ch == '\\') { output.Append(ch); ch = chars[++i]; } else if (ch == '\"') str = false; } } switch (ch) { case '{': case '[': output.Append(ch); output.AppendLine(); AppendIndent(output, ++depth); break; case '}': case ']': output.AppendLine(); AppendIndent(output, --depth); output.Append(ch); break; case ',': output.Append(ch); output.AppendLine(); AppendIndent(output, depth); break; case ':': output.Append(" : "); break; default: if (!char.IsWhiteSpace(ch)) output.Append(ch); break; } } return output.ToString(); } } }