.NetCore Привязка JSON объекта с массивами к словарю - PullRequest
0 голосов
/ 18 марта 2020

Я использую Microsoft.Extensions.Config.Json для привязки некоторых JSON данных конфигурации к классу.

Класс выглядит следующим образом:

public class MyOptions {
    public string BuilderName { get; set; }
    public IDictionary<string, object> BuilderParameters { get; set; }
}

Код привязки:

var config = new ConfigurationBuilder()
    .AddJsonFile("appsettings.json")
    .Build();

MyOptions options = new MyOptions();
config.Bind("MyOptions", options);

Все это прекрасно работает, если значения JSON являются простыми типами, такими как строки, целые числа или bools. Например:

"MyOptions": [
    "BuilderName": "Test"
    "BuildParameters": {
        "A": true,
        "B": "Test"
    }
]

Однако, если JSON содержит массив, привязка полностью завершается ошибкой, и я просто получаю нулевой экземпляр:

"MyOptions": [
    "BuilderName": "Test"
    "BuildParameters": {
        "A": true,
        "B": [ "Test1", "Test2" ]
    }
]

Я не понимаю, почему это потерпит неудачу. Я мог бы использовать разделенную запятыми строку или что-то, что затем анализировалось для создания массива в моем коде, но, похоже, это не нужно. Конечно, это то, чего я бы предпочел избежать, если это возможно.

Редактировать:

Одно из предложенных решений таково: Как сериализовать словарь как часть его родительского объекта, используя Json. Net

Здесь показано, как преобразовать группу пар * ключ / значение JSON в словарь. Мне нужно сделать это, когда значение в одной или нескольких парах ключ / значение представляет собой массив JSON и идет в словарь.

Я ожидаю, что массив будет преобразован в коллекцию (массив, список, не имеет значения) строк или объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...