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.
我有这样的 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.