.NET 5.0 选项模式使用 JSON 数组
.NET 5.0 options pattern using JSON array
我正在构建一个 C# .NET 5.0 应用程序来与外部 API 对话,我们有多个帐户可以 post 向其发送数据。我正在尝试将这些详细信息存储在 appsettings.json
文件中并使用选项模式来检索设置。
我的应用程序中有以下结构 settings.json
"SomeApi": {
"Url": "https://api.someapi.net/v3/",
"Secret": "mysecretvlaue",
"ClientId": "myclientid",
"Accounts": [
{
"Name": "Bob",
"Username": "HisUsername",
"Password": "HisPassword",
"PostingLocation": "HisLocation"
},
{
"Name": "Fred",
"Username": "HisUsername",
"Password": "HisPassword",
"PostingLocation": "HisLocation"
}
]
},
我有一个 class 设置如下:
public class SomeApiOptions
{
public const string SomeApi = "SomeApi";
public string Url { get; set; }
public string Secret { get; set; }
public string ClientId { get; set; }
public List<Account> Accounts { get; set; }
}
public class Account
{
string Name { get; set; }
string Username { get; set; }
string Password { get; set; }
string PostingLocation { get; set; }
}
我的 startup.cs 有这个:
services.Configure<SomeApiOptions>(Configuration.GetSection(SomeApiOptions.SomeApi));
最后,我将 IOptions
注入到 class 中,我需要像这样使用设置:
Public MyClass (IOptionsSnapshot<SomeApiOptions> options)
我遇到的问题是 Accounts
永远不会填充各自的值。
Url
、Secret
等已填充,Accounts
列表中的元素项数正确,但所有属性都具有空值。
我查看了类似的问题并尝试以几种方式重构我的 JSON,但仍然以空值结束。
非常感谢任何帮助。
我发现这里有几个问题。
首先,Account
class 中的 none 个属性是 public,因此您需要更改它:
其次,Location
属性 与 JSON 不匹配,即 PostingLocation
。您的 class 应该是:
public class Account
{
public string Name { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string PostingLocation { get; set; }
}
我正在构建一个 C# .NET 5.0 应用程序来与外部 API 对话,我们有多个帐户可以 post 向其发送数据。我正在尝试将这些详细信息存储在 appsettings.json
文件中并使用选项模式来检索设置。
我的应用程序中有以下结构 settings.json
"SomeApi": {
"Url": "https://api.someapi.net/v3/",
"Secret": "mysecretvlaue",
"ClientId": "myclientid",
"Accounts": [
{
"Name": "Bob",
"Username": "HisUsername",
"Password": "HisPassword",
"PostingLocation": "HisLocation"
},
{
"Name": "Fred",
"Username": "HisUsername",
"Password": "HisPassword",
"PostingLocation": "HisLocation"
}
]
},
我有一个 class 设置如下:
public class SomeApiOptions
{
public const string SomeApi = "SomeApi";
public string Url { get; set; }
public string Secret { get; set; }
public string ClientId { get; set; }
public List<Account> Accounts { get; set; }
}
public class Account
{
string Name { get; set; }
string Username { get; set; }
string Password { get; set; }
string PostingLocation { get; set; }
}
我的 startup.cs 有这个:
services.Configure<SomeApiOptions>(Configuration.GetSection(SomeApiOptions.SomeApi));
最后,我将 IOptions
注入到 class 中,我需要像这样使用设置:
Public MyClass (IOptionsSnapshot<SomeApiOptions> options)
我遇到的问题是 Accounts
永远不会填充各自的值。
Url
、Secret
等已填充,Accounts
列表中的元素项数正确,但所有属性都具有空值。
我查看了类似的问题并尝试以几种方式重构我的 JSON,但仍然以空值结束。
非常感谢任何帮助。
我发现这里有几个问题。
首先,Account
class 中的 none 个属性是 public,因此您需要更改它:
其次,Location
属性 与 JSON 不匹配,即 PostingLocation
。您的 class 应该是:
public class Account
{
public string Name { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string PostingLocation { get; set; }
}