web-dev-qa-db-fra.com

Comment puis-je désérialiser un jeu de données json dans le noyau .net

J'essaie de récupérer différents éléments d'une API, ce qui renvoie un json. Le problème que j'ai est d'obtenir les propriétés du json car ce n'est pas toujours le même nom. J'ai déjà désérialisé des fichiers json, mais ils étaient différents de celui-ci. Voici le json que j'ai:

{"2": {"name": "Cannonball", "store": 5}, "6": {"name": "Cannon base", "store": 187500}, "12289": {"name": "Mithril platelegs (t)", "store": 2600}, "8": {"name": "Cannon stand", "store": 187500}, "10": {"name": "Cannon barrels", "store": 187500}, "12": {"name": "Cannon furnace", "store": 187500}}

C'est en fait un peu plus grand que cela, mais je ne peux pas comprendre comment le désérialiser facilement, car l'id n'a pas de vrai nom, sur la documentation de newtonsoft.json, j'ai vu quelque chose à propos de l'utilisation des ensembles de données, je ne sais pas savoir si cela fonctionnerait réellement, mais j'ai vu qu'ils ont été supprimés. J'adorerais vraiment que cela fonctionne, car cela me dérange depuis un certain temps maintenant.

S'il y a quelqu'un qui sait comment faire cela, toute aide serait grandement appréciée.

6
jasont20015

Vous pouvez gérer cette situation en désérialisant en Dictionary<string, T>T est une classe pour contenir les données d'élément, par exemple:

public class Item
{
    public string Name { get; set; }
    public int Store { get; set; }
}

Désérialiser comme ceci:

var dict = JsonConvert.DeserializeObject<Dictionary<string, Item>>(json);

Violon: https://dotnetfiddle.net/hf1NPP

14
Brian Rogers