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.