Использование JSON в c# (System.Runtime.Serialization)

518
09 января 2017, 19:44

Задача хранить сериализованные данные в JSON. Нашел даже пример: DataContractJsonSerializer

Но есть проблема: данные JSON в файле сохраняются в одну строчку:

[{"Age":29,"Company":{"Name":"Microsoft"},"Name":"Tom"},{"Age":25,"Company":{"Name":"Apple"},"Name":"Bill"}]

Как сериализовывать в JSON, что бы данные имели нормальное форматирование, как и в примере в википедии?

Answer 1

Тут советуют использовать либу JSON.NET

Пример с либой:

using System;
using Newtonsoft.Json;
namespace JsonPrettyPrint
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Product product = new Product
                {
                    Name = "Apple",
                    Expiry = new DateTime(2008, 12, 28),
                    Price = 3.99M,
                    Sizes = new[] { "Small", "Medium", "Large" }
                };
            string json = JsonConvert.SerializeObject(product, Formatting.Indented);
            Console.WriteLine(json);
            Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
        }
    }
    internal class Product
    {
        public String[] Sizes { get; set; }
        public decimal Price { get; set; }
        public DateTime Expiry { get; set; }
        public string Name { get; set; }
    }
}

Результат:

{
  "Sizes": [
    "Small",
    "Medium",
    "Large"
  ],
  "Price": 3.99,
  "Expiry": "\/Date(1230447600000-0700)\/",
  "Name": "Apple"
}

Как я понимаю Formatting.Indented задает отступы.

P.S Если верить табличке, то JSON.NET круче реализации от майков.

READ ALSO
Smoke-тестирование сайта

Smoke-тестирование сайта

Как можно автоматизировать смоук-тестирование сайта?

473
Использование С++ библиотеки в C#

Использование С++ библиотеки в C#

Всем привет! Народ, подскажите, может, кто сталкивался с таким

469
Не присваивается значение строке c#

Не присваивается значение строке c#

Собственно сам вопрос, есть строка которой должно быть присвоенно значение

484