static void Main(string[] args) { if (args.Length == 0) { Console.WriteLine("Please enter a directory"); return; } Console.WriteLine(FileProvider.GetFiles(args[0]).Count); Console.WriteLine(JSONProvider.ToJSON(FileProvider.GetFiles(args[0]))); Console.ReadKey(); }
private static void GenerateJSONFile(IQueryable <Category> categories, JSONProvider provider = JSONProvider.NET) { string providerName = provider.ToString(); string fileName = $"categories-and-products-{providerName}.json"; string path = Path.Combine(Environment.CurrentDirectory, fileName); FileStream stream = File.Create(path); switch (provider) { case JSONProvider.NET: var jsonWriterNet = new Utf8JsonWriter(stream, new JsonWriterOptions() { Indented = true }); using (jsonWriterNet){ jsonWriterNet.WriteStartObject(); jsonWriterNet.WriteStartArray("categories"); foreach (Category category in categories) { jsonWriterNet.WriteStartObject(); jsonWriterNet.WriteNumber("id", category.CategoryID); jsonWriterNet.WriteString("name", category.CategoryName); jsonWriterNet.WriteString("description", category.Description); jsonWriterNet.WriteStartArray("products"); foreach (Product product in category.Products) { jsonWriterNet.WriteStartObject(); jsonWriterNet.WriteNumber("id", product.ProductID); jsonWriterNet.WriteString("name", product.ProductName); jsonWriterNet.WriteNumber("cost", product.Cost.Value); jsonWriterNet.WriteNumber("stock", product.Stock.Value); jsonWriterNet.WriteBoolean("discontinued", product.Discontinued); jsonWriterNet.WriteEndObject(); } jsonWriterNet.WriteEndArray(); jsonWriterNet.WriteEndObject(); } jsonWriterNet.WriteEndArray(); jsonWriterNet.WriteEndObject(); } break; case JSONProvider.Newtonsoft: var file = new StreamWriter(stream, Encoding.UTF8); var jsonWriter = new JsonTextWriter(file); jsonWriter.Indentation = 4; using (stream) { using (file) { using (jsonWriter) { jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName("categories"); jsonWriter.WriteStartArray(); foreach (Category category in categories) { jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName("id"); jsonWriter.WriteValue(category.CategoryID); jsonWriter.WritePropertyName("name"); jsonWriter.WriteValue(category.CategoryName); jsonWriter.WritePropertyName("description"); jsonWriter.WriteValue(category.Description); jsonWriter.WritePropertyName("products"); jsonWriter.WriteStartArray(); foreach (Product product in category.Products) { jsonWriter.WriteStartObject(); jsonWriter.WritePropertyName("id"); jsonWriter.WriteValue(product.ProductID); jsonWriter.WritePropertyName("name"); jsonWriter.WriteValue(product.ProductName); jsonWriter.WritePropertyName("cost"); jsonWriter.WriteValue(product.Cost); jsonWriter.WritePropertyName("stock"); jsonWriter.WriteValue(product.Stock); jsonWriter.WritePropertyName("discontinued"); jsonWriter.WriteValue(product.Discontinued); jsonWriter.WriteEndObject(); } jsonWriter.WriteEndArray(); jsonWriter.WriteEndObject(); } jsonWriter.WriteEndArray(); jsonWriter.WriteEndObject(); } } } break; } Console.WriteLine("{0} uses {1} bytes", fileName, new FileInfo(fileName).Length); }