0
votes

Itérer de manière dynamique via un objet JSON

J'ai cette chaîne JSON:

var bpi = JsonConvert.DeserializeObject<dynamic>(json)["bpi"];

foreach (var currency in bpi)
{
   // Do something with currency["rate"] for example
}


1 commentaires

Je suggérerais App.QuickType.io?Share=vjjuujw2twmgeiff2rrd comme point de départ. 99% des problèmes JSON disparaissent si vous convertissez le JSON en un type de béton et allez-y.


4 Réponses :


0
votes

Vous pouvez utiliser jarray et jobject de classes de Newtonsoft.json pour y parvenir.

Pas de correspondance à 100%, mais montre comment atteindre les échantillons sont ici: HTTPS : //www.newtonsoft.com/json/help/html/toObjectComplet.htm


0 commentaires

0
votes

Vous devez accéder à la propriété valeur code> de l'objet renvoyé.

foreach (var bpis in JsonConvert.DeserializeObject<dynamic>(j)["bpi"])
{
    Console.WriteLine(bpis.Value["rate"].Value);
    Console.WriteLine(bpis.Value["code"].Value);
}


0 commentaires

0
votes

Le problème que vous avez est que les membres de BPI sont jProperty des instances - ils ont un nom et une valeur. La valeur de la propriété est l'objet avec les données qui vous intéressent, pas le propriété elle-même .

à la place de votre commentaire

// fait quelque chose avec la devise ["Noter"] par exemple

plutôt faire quelque chose comme

console.writeline (devise.value ["taux"]);


0 commentaires

0
votes
"USD": {
  "code": "USD",
  "symbol": "&#36;",
  "rate": "8,392.9583",
  "description": "United States Dollar",
  "rate_float": 8392.9583
}
"GBP": {
  "code": "GBP",
  "symbol": "&pound;",
  "rate": "6,634.7343",
  "description": "British Pound Sterling",
  "rate_float": 6634.7343
}
"EUR": {
  "code": "EUR",
  "symbol": "&euro;",
  "rate": "7,605.7660",
  "description": "Euro",
  "rate_float": 7605.766
}

0 commentaires