J'ai un json comme celui-ci à lire en c # mais il affiche null.
Provices.json contient ce json
public class UserService { public UserService(IOptions<AppSettings> appSettings, IOptions<Provinces> states) { _appSettings = appSettings; _states = states; } //Getting value from json public List<State> GetStates() { var data = this._states.Value.States; // Zero count shows here return new List<State>(); } }
contient le fichier de démarrage
public class Provinces { public Provinces() { this.States = new List<State>(); } public List<State> States { get; set; } } public class State { public int CountryId { get; set; } public string Name { get; set; } public string Abbreviation { get; set; } public bool Published { get; set; } public bool DisplayOrder { get; set; } public string Country { get; set; } public int Id { get; set; } }
Voici des modèles c #
services.Configure<AppSettings>(Configuration.GetSection("AppSettings")); services.Configure<Provinces>(Configuration.GetSection("Provinces"));
Voici comment je lis ce fichier qui me donne des valeurs nulles
{ "Provinces": { "States": [ { "CountryId": 1, "Name": "AA (Armed Forces Americas)", "Abbreviation": null, "Published": false, "DisplayOrder": 0, "Country": null, "Id": 1 }, { "CountryId": 1, "Name": "AE (Armed Forces Europe)", "Abbreviation": null, "Published": false, "DisplayOrder": 0, "Country": null, "Id": 54 } ] } }
Je lis aussi AppSettings.json qui fonctionne bien mais province.json ne fonctionne pas. Pouvez-vous s'il vous plaît dire ce que j'ai fait
4 Réponses :
var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJson(yourconfigSetting.json optional: true, reloadOnChange: true) .AddJsonFile("Provinces.json", optional: true, reloadOnChange: true) .Build(); If you call as separate file like this then it will come, or else you can add the contents of Provinces to your appconfig json file and get it as section for that your current code will work.
Non, ça ne marche pas. De plus, si j'ajoute ce tableau dans les paramètres d'applications, cela ne fonctionne pas non plus. Il y a autre chose qui ne va pas
J'ai mon problème.
Eh bien, la réponse était de type.
"CountryId": 1, "Name": "AE (Armed Forces Europe)", // "Abbreviation": null, // "Published": false, //"DisplayOrder": 0, // "Country": null, "Id": 54
En commentant ces lignes, cela a commencé à fonctionner.
La deuxième erreur est d'ajouter un fichier json dans Program.cs [.net core version 2.0]
Ce qui est observé, certains des champs sont manquants pour les rendre Nullable comme DisplayOrder par exemple json ne se charge pas à cause de la propriété null.
public class State { public int CountryId { get; set; } public string Name { get; set; } public string Abbreviation { get; set; } public bool Published { get; set; } public bool DisplayOrder { get; set; } public string Country { get; set; } public int Id { get; set; } }
Remarque: la propriété de chaîne attendue, pas besoin de la rendre nulle, le type de paramètre reste nous devons le rendre nul et si vous êtes sûr que la propriété contient également valeur alors pas besoin de lui faire un paramètre nul.
Vous avez à la fois Published
et DisplayOrder
déclarés comme bool
mais dans le fichier, les valeurs sont:
public List<State> GetStates() { var data = this._states.Value.States; // Zero count shows here return new List<State>(); }
De plus, lorsque vous lisez vos valeurs dans données
dans le code ci-dessous, vous renvoyez une nouvelle liste vide. Vous devez renvoyer des données
à la place.
"Published": false, "DisplayOrder": 0,
vous vouliez dire qu'ici aucune valeur ne vient "_states = states"?
Oui. aucune valeur dans les états. Le compte est nul
Vous prenez la section Provinces dans votre démarrage, essayez de l'ajouter en tant que fichier séparé comme celui-ci ".AddJsonFile (" Provinces.json ")
Au lieu de le faire en tant que fichier séparé, vous pouvez les placer dans le fichier de configuration, puis prendre la section de la configuration comme ci-dessus votre code, puis cela fonctionnera.