c# - .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 数组并且它是一个进入字典的地方。
我希望将数组转换为字符串或对象的集合(数组,列表,无关紧要)。
解决方案
推荐阅读
- android - 无法在 Android Studio 4.1 中打开项目结构对话框
- c++ - 如何正确结束我的鼠标记录程序
- python - 如何读取以单引号开头的列并写入其他单元格而不丢失使用 xlwings 的 Excel 单元格格式
- spring-cloud-dataflow - SCDF Stream Deployment 状态不一致
- blazor - Blazor MSAL 错误 AADSTS50058。已发送静默登录请求,但没有用户登录
- java - Java Connect4 游戏。我想检查列是否已满
- java - kotlin Runtime.GetRuntime().exec 进程在执行“docker-compose down”时未终止
- javascript - Yii2:从列表视图中获取数据以记录活动记录
- python - 问题:append() 方法不保持文本文件中字符串的原始顺序
- r - 将一系列数字分配给数据框行