Em appsettings.json
Em Startup.cs
Em HomeController
Existem os meus códigos acima, fiquei nulo Como obter a matriz?
Se você quiser escolher o valor do primeiro item, faça o seguinte:
Se você quiser escolher o valor de toda a matriz, faça o seguinte:
Idealmente, você deve considerar o uso de um padrão de opções sugerido pela documentação oficial. Isso lhe dará mais benefícios.
Se você tiver uma variedade de objetos como "Clients": [ {..}, {..} ], você deve chamar Configuration.GetSection("Clients").GetChildren().
Se você tiver uma matriz de literais como "Clients": [ "", "", "" ], você deve chamar .GetSection("Clients").GetChildren().ToArray().Select(c => c.Value).ToArray().
Esta resposta produzirá 4 itens, sendo o primeiro a própria seção com um valor vazio. Está incorreto.
— Giovanni Bassi
var clients = Configuration.GetSection("Clients").GetChildren() .Select(clientConfig => new Client { ClientId = clientConfig["ClientId"], ClientName = clientConfig["ClientName"], ... }) .ToArray();
— Invoquei
Nenhuma dessas opções funciona para mim, pois o objeto está retornando nulo no ponto de "Clientes" usando o exemplo de hallo. Estou confiante de que o json está bem formado, pois trabalha com o deslocamento inserido na string ["item: 0: childItem"] no formato "Item": [{...}, {...}]
Você pode instalar os dois pacotes NuGet a seguir:
E então você terá a possibilidade de usar o seguinte método de extensão:
Isso é muito mais direto do que as outras respostas.
Esta é a melhor resposta de longe.
— 26918 Giovanni Bassi
No meu caso, o aplicativo da web Aspnet core 2.1, incluiu esses dois pacotes de pepitas. Portanto, foi apenas uma mudança de linha. Obrigado
— Shibu Thannikkunnath
Ele também funciona com uma variedade de objetos, por exemplo _config.GetSection("AppUser").Get<AppUser[]>();
— Giorgos Betsos 23/02
Adicione um nível no seu appsettings.json:
Crie uma classe representando sua seção:
Na classe de inicialização do aplicativo, vincule seu modelo e injete-o no serviço de DI:
E no seu controlador, obtenha seus dados de configuração no serviço de DI:
Você também pode armazenar todo o seu modelo de configuração em uma propriedade em seu controlador, se precisar de todos os dados:
O serviço de injeção de dependência do ASP.NET Core funciona como um encanto :)
Então, como você usa MySettingsna inicialização?
Eu recebo um erro que precisa de uma vírgula entre "MySettings" e "MyArray".
— Markus #
Se você tiver uma matriz de objetos JSON complexos como este:
Você pode recuperar as configurações desta maneira:
Isso funcionou para eu retornar uma matriz de strings da minha configuração:
Minha seção de configuração fica assim:
— CodeThief
No caso de retornar uma matriz de objetos JSON complexos da configuração, adaptei a resposta de @ djangojazz para usar tipos anônimos e dinâmicos em vez de tuplas.
Dada uma seção de configurações de:
Você pode retornar a matriz de objetos desta maneira:
Tipo de pergunta antiga, mas posso dar uma resposta atualizada para o .NET Core 2.1 com padrões C # 7. Digamos que eu tenha uma listagem apenas em appsettings.Development.json, como:
Posso extraí-los em qualquer lugar em que o Microsoft.Extensions.Configuration.IConfiguration seja implementado e conectado da seguinte maneira:
Agora eu tenho uma lista de um objeto bem digitado que está bem digitado. Se eu for testUsers.First (), o Visual Studio agora deve mostrar opções para 'UserName', 'Email' e 'Password'.
No ASP.NET Core 2.2 e posterior, podemos injetar a IConfiguration em qualquer lugar do aplicativo, como no seu caso, você pode injetar a IConfiguration no HomeController e usá-lo dessa maneira para obter a matriz.
Você pode obter o array direto sem incrementar um novo nível na configuração:
— Andreas Friedel
Forma curta:
Retorna uma matriz de string:
{"str1", "str2", "str3"}
— mojtaba karimi
Trabalhou para mim. Obrigado. O uso do Microsoft.Extensions.Configuration.Binder também funciona, no entanto, eu gostaria de não fazer referência a outro pacote Nuget se uma única linha de código puder fazer o trabalho.