0
votes

Comment lire un tableau de dictionnaire des paramètres

de appsettings.json je veux lire ces paramètres:

    public class CountryPhoneSetting
{
    public IDictionary<string, CountryDetails> CountryInfo {
        get;set;
    }

    public class CountryDetails
    {
        public string DialCode { get; set; }

        public bool CanSMS { get; set; }

        public bool CanVerify { get; set; }
    }


4 commentaires

et je veux l'ajouter aux services tels que: services.configure (Configuration.Getsec TION ("CountryPhonese Ting"));


Montrez-nous le code qui ne fonctionne pas.


Configuration.Gettection ("CountryPHonesetting"). Getchildren () .tolist () .ToDictionary (x => x.key, x => x.value); Cela se traduit en vide


Biîtement, le Json est "CountryPHonesetting": [ {"US": {"DIAMCODE": "+1", "CANSMS": TRUE, "CANVERIFY": TRUE}} ] , l'extra [] en fait un dictionnaire Dictionnaire [] Peut-être afficher une configuration avec plusieurs entrées dans le dictionnaire .. Sera-t-il un dictionnaire multiple d'un élément?


3 Réponses :


0
votes

Notez le supplément [] code> après CountryPHonesetting code>. C'est une gamme de dictionnaire.

public class CountryPhoneSetting
{
    [JsonProperty("CountryPhoneSetting")]
    public Dictionary<string, CountryDetails>[]  CountryInfo {get;set;}
}

public class CountryDetails
{
    [JsonProperty("DialCode")]
    public string DialCode { get; set; }
    [JsonProperty("CanSMS")]
    public bool CanSms { get; set; }
    [JsonProperty("CanVerify")]
    public bool CanVerify { get; set; }
}


var result  = JsonConvert.DeserializeObject<CountryPhoneSetting>(input);


0 commentaires

2
votes

J'écris une petite extension pour mon projet. Vous pouvez l'essayer aussi

configuration.Load<List<Dictionary<string, CountryDetails>>>("CountryPhoneSetting")


0 commentaires

2
votes

Essayez de changer votre JSON en: xxx pré>

et votre classe à: p> xxx pré>

utilisation: p>

Configuration.GetSection("CountryPhoneSetting").Bind(CountryPhoneSetting);


4 commentaires

J'ai oublié de mentionner que pour peupler la campagne de l'objet, vous devez mettre cette ligne de code à l'intérieur du fichier de démarrage: configuration.getsection ("CountryPHonesetting"). Bind (Pays Phonesetting); Si vous ne savez pas comment faire, lisez cet article: weblog.west-wind.com/posts/2017/dec/12/...


Cette approche peut être utile. Pourriez-vous s'il vous plaît mettre à jour la réponse avec votre commentaire?


@ Selimyıldız Il semble que je n'ai pas assez de réputation pour éditer des réponses = (c'est la première fois que je fais asserve une question


La réponse affichée et l'article qui a été partagé m'a aidé à résoudre mon problème. Merci !