【发布时间】:2019-05-28 20:05:17
【问题描述】:
我正在尝试将 JSON 文件绑定到模型以用于 dotnet 核心项目中的配置设置。
json 看起来像:
"Settings": {
"Values": [
{ "Value1": "1" },
{ "Value2": "2" }
]}
我的模型看起来像:
public class Settings
{
public List<Value> Values{ get; set; }
}
public class Value
{
public string Value1 { get; set; }
public string Value2 { get; set; }
}
我绑定了以下内容:
var settings = _configuration.GetSection("Settings").Get<Settings>();
但这会导致settings 在列表中包含两个Value 对象-第一个Value 对象具有Value1 = 1 和Value2 = null,第二个Value 对象具有Value1 = null 和Value2 = 2 .我怎样才能绑定这样它settings 在Values 中只有一个Value 对象,同时填充了两个属性?
这与此处建议的不同: https://stackoverflow.com/questions/51488845/how-to-read-a-string-array-in-appsettings-json
这是因为在这种情况下,数组中的每个对象都有不同的属性,而在建议的副本中,所有对象都是一致的。
【问题讨论】:
-
如果只需要一个Value对象,只定义一个Value对象:
"Values": [ { "Value1": "1", "Value2": "2" } ] -
Json 文件中的@EdPlunkett?
-
是的。您现在得到的正是当前 JSON 所描述的内容。
-
@EdPlunkett - 有没有其他方法可以在不更改 JSON 的情况下实现这一目标?
-
我猜你可以编写一些奇怪的代码来将列表压缩/合并/任何一个对象。你可以编写代码来做任何事情。它是怎么变成这样的?为什么要这样做?
标签: c# json .net-core configuration