Сериализация массива с помощью Newtonsoft.Json c #

2

У меня есть некоторые параметры в файле app.config моего проекта. Я хочу сделать эти параметры максимально простыми для клиентов

<add key="name" value="Incognito"/>
<add key="emails[0].type" value="Personal"/>
<add key="emails[0].email" value="[email protected]"/>

Мне нужно сделать JSON из этих параметров. Сейчас я использую Dictionary

var parameters = new Dictionary<string, string>();
for (int i = 0; i < settings.Count; i++)
{
    parameters.Add(settings.GetKey(i), settings[i]);
}
var jsonData = JsonConvert.SerializeObject(parameters);

В этом случае я получаю в результате:

{ "name": "Incognito", "emails[0].type": "Personal", "emails[0].email": "[email protected]" }

Но я хочу видеть обычный массив JSON:

{ "name": "Incognito", "emails": [{"type": "Personal", "email": "[email protected]"}, {...}] }

Как я могу это сделать? Как правильно сериализовать его? Или, может быть, вы знаете способ записи данных в app.config в удобочитаемом формате?

  • 0
    Вам необходимо создать модель типа: List <emails> с электронными письмами, имеющими два свойства: type и email соответственно. Тогда вам нужно будет установить эти свойства в вашем словаре. Тогда простая сериализация даст вам ваш результат.
  • 2
    Если у вас есть несколько параметров в app / web.config, подобных этим, которые тесно связаны, возможно, стоит взглянуть на создание пользовательского ConfigurationSection
Теги:
arrays

1 ответ

2

Чтобы получить массив JSON, вам нужно использовать что-то более похожее на массив, скажем, возможно, Array или List типа, который имеет свойства type и email.

public class Parameters{
    public string Name { get; set; }
    public List<Email> Emails { get; set; }
}

public class Email{
    public string Type { get; set; }
    public string Email { get; set; }
}

Сериализация экземпляра Parameters даст вам желаемую структуру JSON.

  • 0
    Это должен быть комментарий, а не фактический ответ. Пожалуйста, укажите код и поясните, что вы имеете в виду.
  • 0
    @RahulSharma Дай мне шанс, приятель;)
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню