json.net Как сериализовать такой объект?

258
05 июня 2017, 21:11

json.net обычно сериализует словарь в коллекцию:

{"a":{"b":{"c":"d"}}}

Вот так:

class A
{
    public Dictionary<string,object> a{get; set;}
}
class C
{
    public string c{get; set;}
}
class Program
{
    public static void Main(string[] args)
    {
        A a = new A();
        a.a = new Dictionary<string, object>();
        C c = new C();
        c.c = "d";
        a.a.Add("b", c);
        string json = JsonConvert.SerializeObject(a);
        Console.WriteLine(json);
        Console.Write("Press any key to continue . . . ");
        Console.ReadKey(true);
    }
}

Но я хочу сериализовать словарь в массив:

{"a":["b":{"c":"d"}]}

Есть ли простой способ сделать это?

Answer 1

Ответ на ваш вопрос "Есть ли простой способ сделать это?" - нет. Нет никаких легальных способов сделать это. Все потому что требуемый вами формат невалиден.

Вы можете только это сделать вручную, но вопрос уже будет в другом - надо ли вам это? Ведь никакой JSON парсер не сможет распарсить невалидную JSON-строку...

P.S проверить валидность JSON-строки можно на https://jsonlint.com/.

READ ALSO
Один ScrollBar для двух RichTextBox

Один ScrollBar для двух RichTextBox

Можно ли сделать один ScrollBar, который будет прокручивать два RichTextBox? RichTextBox1 - это сам текст, а RichTextBox2 пометки/комментарии к выбранной строке...

242
Метод расширения (ошибка)

Метод расширения (ошибка)

Подскажите, что я делаю не так? (посмотрите изображения ниже)

297
JS+CryptoAPI: как выбрать криптопровайдера?

JS+CryptoAPI: как выбрать криптопровайдера?

Стоит задача: определить из браузера, установлен ли у пользователя криптопровайдеры КриптоПРО CSP или VipNet CSP

297
Не получается вызвать событие при клике на canvas, Pixi.js

Не получается вызвать событие при клике на canvas, Pixi.js

Изучаю pixijs, не могу понять, почему это не работает

399