Десериализовать appsettings.json с помощью массива json в список C#C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Десериализовать appsettings.json с помощью массива json в список C#

Сообщение Anonymous »

У меня есть консольное приложение C# .Net Core, которое должно проверять различные файлы журналов, если они содержат ошибки, и уведомлять нужного человека по электронной почте. В приложении есть файл appsetting.json, который выглядит следующим образом:

Код: Выделить всё

{
"Programs": [
{
"name": "program 1",
"LoggingPath": "C:\...",
"Emails": [
"[email protected]",
"[email protected]",
"[email protected]"
]
},
{
"name": "program 2",
"LoggingPath": "C:\...",
"Emails": [
"[email protected]",
"[email protected]",
"[email protected]"
]
}
]
}
Теперь я хочу преобразовать этот Json в список объектов C# для перебора различных программ, анализа журнала и т. д.
Я использовал https ://json2csharp.com, чтобы преобразовать Json в этот код C#:

Код: Выделить всё

public class Program
{
public string name { get; set; }
public string LoggingPath { get; set; }
public List Emails { get; set; }
}

public class Root
{
public List
 Programs { get; set; }
}

Мой код для инициализации appsettings.json и десериализации выглядит следующим образом:

Код: Выделить всё

public static void Main(string[] args)
{
IConfiguration configuration;
configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();

JToken JtokenConfig = Serialize(configuration);

Root myDeserializedClass = JsonConvert.DeserializeObject(JtokenConfig.ToString());
}
Но когда я пытаюсь это сделать, я получаю следующую ошибку:

Newtonsoft.Json.JsonSerializationException: 'Невозможно десериализовать текущий объект JSON (например, {"name":"value"}) в тип 'System.Collections.Generic.List`1[LogAnalyzer.Model+Program]', поскольку для этого типа требуется массив JSON (например, [1,2,3]) для правильной десериализации.
Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычный тип .NET (например, не примитивный тип, такой как целое число, и не тип коллекции, такой как массив или список), который можно десериализовать из объекта JSON. JsonObjectAttribute также можно добавить к типу, чтобы заставить его десериализовать из объекта JSON.

Я не могу изменить Json на массив (без «Программы» :) потому что компоновщику appsettings.json требуется объект, а не массив.
Я также пытался использовать этот Json, чтобы избавиться от массива и использовать динамическое свойство C#. к десериализовали разные имена объектов, но десериализация также не удалась.

Код: Выделить всё

{
"Programs": {
"program 1": {
"LoggingPath": "test",
"Emails": [
"[email protected]",
"[email protected]",
"[email protected]"
]
},
"program 2": {
"LoggingPath": "test",
"Emails": [
"[email protected]",
"[email protected]",
"[email protected]"
]
}
}
}
Я прочитал бесчисленное количество тем stackoverflow и других веб-сайтов, но не смог преобразовать Json в список C#.
Надеюсь, кто-нибудь здесь сможет мне помочь или подскажи.

Подробнее здесь: https://stackoverflow.com/questions/751 ... sharp-list
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»