C# appsettings 将对象数组绑定到 class

C# appsetttings bind array of objects to class

我有这样的 int appsettings.js 部分:

 "AccessKeys": {
    "user1": {
      "pass": ""
    },

我在 C# 中创建了 classes 以将此部分绑定到这些 classes:

public class 访问密钥 { public 列出用户 = new List(); }

public class AccessKeyUserJson
{
    public AccessKeyUser AccessKeyUser { get; set; }
}

public class AccessKeyUser
{
    public string Pass { get; set; }
}

我在 Startup.cs 中绑定 classes:

  services.Configure<AppSettingsConfig>(Configuration);

AppSettingsConfig 我有 属性 AccessKeys 并且这个 属性 绑定正确但是 Users 是空的(0 项)


我改变了结构:

"AccessKeys": [
    {
      "user1": "",
      "pass": ""
    },
]

你为什么不尝试这样的事情:

using (var ms = new System.IO.MemoryStream(Encoding.Unicode.GetBytes(myJSONstring)))
{
    System.Runtime.Serialization.Json.DataContractJsonSerializer js = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(myStruct));
    myStruct aux = (myStruct)js.ReadObject(ms);
}

这是一种单级方法,真诚地,我从未尝试过在子类化方案中强制转换任何内容,但也许值得一试。

如您所见,这里 JSON 字符串被内存流获取,然后被转换为最终的 struct/class.