Accéder aux champs JSON avec des touches numériques

Je souhaite accéder à certaines adresses d’images dans un fichier JSON, mais le nom du champ est un nombre et en c #, un nombre n’est pas un nom valide pour une variable …

Mon JSON:

{ "id":3441, "name":"test", "address": { "1":"url.com\/45.jpg", "2":"url.com\/23.jpg", "3":"url.com\/65.jpg", "4":"url.com\/789.jpg", }, "count":2 } 

Mon code en C #: ( HrmlResult est mon JSON)

 dynamic stuff1 = Newtonsoft.Json.JsonConvert.DeserializeObject(HtmlResult); ssortingng address= stuff1.address; //It Works ssortingng allPics = stuff1.pic; //It Works firstPicTextBox.Text= stuff1.pic.1; //comstackr Error secondPicTextBox.Text = stuff1.pic[2]; //runtime Error 

Que devrais-je faire?! Merci à tous…

Vous devez créer un object Model avec des propriétés, comme dans le fichier json que vous attendez.

Ensuite, pour les propriétés de numéro, vous pouvez utiliser l’atsortingbut JsonProperty pour nommer la propriété en tant que numéro, par exemple:

 class MyModel { [JsonProperty("2")] public ssortingng Two {get; set;} } 

puis utilisez la version de DeserializeObject

Ceci est un exemple simplifié. Pour votre object, vous devez gérer la hiérarchie, avoir probablement une autre classe pour la propriété ‘address’ et l’utiliser comme type de propriété dans le modèle principal.

Si vous êtes capable de modifier le JSON, c’est votre meilleur pari. Ce que vous semble semble être dans un tableau:

 { "id":3441, "name":"test", "address":[ "url.com\/45.jpg", "url.com\/23.jpg", "url.com\/65.jpg", "url.com\/789.jpg" ], "count":2 } 

À partir de là, votre adresse est un simple tableau de chaînes, plutôt qu’une collection de paires clé-valeur numérotée.