public static Reader CreateReader(TextReader reader, SerializationSettings settings) { var documentReader = SupportedDocumentTextReader.Create(reader); if (documentReader.DocumentFormat == SupportedDocumentTextReader.XmlFormat) { return(new XmlDocumentReader(documentReader, settings)); } if (documentReader.DocumentFormat == SupportedDocumentTextReader.JsonFormat) { return(new JsonReader(documentReader, settings)); } return(new CsvReader(documentReader, settings)); }
public static SupportedDocumentTextReader Create(TextReader reader) { var format = SupportedDocumentTextReader.UnknownFormat; var memory = new MemoryStream(); var writer = new StreamWriter(memory); while (reader.Peek() > -1) { var ch = (char)reader.Read(); writer.Write(ch); writer.Flush(); if (!char.IsWhiteSpace(ch)) { if (ch == '<') { format = SupportedDocumentTextReader.XmlFormat; } else if (ch == '{' || ch == '[') { format = SupportedDocumentTextReader.JsonFormat; } else { format = SupportedDocumentTextReader.CsvFormat; } break; } } memory.Position = 0; var memoryReader = new StreamReader(memory); var compositeReader = new SupportedDocumentTextReader(format, memoryReader, reader); return(compositeReader); }