private static void SerializeString(string input, System.Text.StringBuilder sb) { sb.Append('"'); sb.Append(JavaScriptString.QuoteString(input)); sb.Append('"'); }
private JavaScriptObjectDeserializer(string input, int depthLimit, JavaScriptSerializer serializer) { this._s = new JavaScriptString(input); this._depthLimit = depthLimit; this._serializer = serializer; }
internal static string QuoteString(string value) { System.Text.StringBuilder stringBuilder = null; string result; if (string.IsNullOrEmpty(value)) { result = string.Empty; } else { int startIndex = 0; int num = 0; int i = 0; while (i < value.Length) { char c = value[i]; if (c == '\r' || c == '\t' || c == '"' || c == '\'' || c == '\\' || c == '\n' || c == '\b' || c == '\f' || c < ' ') { if (stringBuilder == null) { stringBuilder = new System.Text.StringBuilder(value.Length + 5); } if (num > 0) { stringBuilder.Append(value, startIndex, num); } startIndex = i + 1; num = 0; } char c2 = c; if (c2 <= '"') { switch (c2) { case '\b': stringBuilder.Append("\\b"); break; case '\t': stringBuilder.Append("\\t"); break; case '\n': stringBuilder.Append("\\n"); break; case '\v': goto IL_164; case '\f': stringBuilder.Append("\\f"); break; case '\r': stringBuilder.Append("\\r"); break; default: if (c2 != '"') { goto IL_164; } stringBuilder.Append("\\\""); break; } } else if (c2 != '\'') { if (c2 != '\\') { goto IL_164; } stringBuilder.Append("\\\\"); } else { JavaScriptString.AppendCharAsUnicode(stringBuilder, c); } IL_188: i++; continue; IL_164: if (c < ' ') { JavaScriptString.AppendCharAsUnicode(stringBuilder, c); } else { num++; } goto IL_188; } if (stringBuilder == null) { result = value; } else { if (num > 0) { stringBuilder.Append(value, startIndex, num); } result = stringBuilder.ToString(); } } return(result); }