예제 #1
0
        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);
        }