,c#,json"/>

首页 > 解决方案 > .NetCore 将带有数组的 JSON 对象绑定到字典

问题描述

我正在使用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 值是简单类型,例如字符串、整数或布尔值,这一切都可以正常工作。例如:

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

但是,如果 JSON 包含一个数组,则绑定完全失败,我只会得到一个空实例:

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

我不明白为什么这会失败。我可以使用逗号分隔的字符串或其他东西,然后对其进行解析以在我的代码中创建一个数组,但这似乎是不必要的。当然,如果可能的话,我宁愿避免这种事情。

编辑:

一个建议的解决方案是:How to serialize a Dictionary as part of its parent object using Json.Net

这显示了如何将一组 JSON 键/值对转换为字典。我需要做的是在一个或多个键/值对中的值是一个 JSON 数组并且它是一个进入字典的地方。

我希望将数组转换为字符串或对象的集合(数组,列表,无关紧要)。

标签: c#json

解决方案


推荐阅读