J'essaie de désérialiser l' appel d' API Graph d' un ami Facebook dans une liste d'objets. L'objet JSON ressemble à:
{"data":[{"id":"518523721","name":"ftyft"},
{"id":"527032438","name":"ftyftyf"},
{"id":"527572047","name":"ftgft"},
{"id":"531141884","name":"ftftft"},
{"id":"532652067","name"...
List<EFacebook> facebooks = new JavaScriptSerializer().Deserialize<List<EFacebook>>(result);
Cela ne fonctionne pas, car l'objet primitif n'est pas valide. Comment puis-je désérialiser cela?
Dictionary<string,string>
, consultez: stackoverflow.com/questions/7699972/…Réponses:
Vous devez créer une structure comme celle-ci:
Ensuite, vous devriez pouvoir faire:
Les noms de mes classes ne sont qu'un exemple. Vous devez utiliser des noms propres.
Ajout d'un exemple de test:
Produit:
la source
Parfois, je préfère les objets dynamiques:
la source
Un excellent moyen de générer automatiquement ces classes pour vous est de copier votre sortie JSON et de la jeter ici:
http://json2csharp.com/
Il vous fournira un point de départ pour retoucher vos classes pour la désérialisation.
la source
Très facilement, nous pouvons analyser le contenu JSON à l'aide du dictionnaire et de JavaScriptSerializer. Voici l'exemple de code par lequel j'analyse le contenu JSON d'un fichier ashx.
la source
Newtonsoft.JSON
est une bonne solution pour ce genre de situations. AussiNewtonsof.JSON
est plus rapide que d' autres, commeJavaScriptSerializer
,DataContractJsonSerializer
.Dans cet exemple, vous pouvez effectuer les opérations suivantes:
Ensuite, vous pouvez convertir jsonData en
JArray
, et vous pouvez utiliser unefor
boucle pour obtenir des données à chaque itération.Aussi, je veux ajouter quelque chose:
Travailler avec un objet dynamique et utiliser la sérialisation Newtonsoft est un bon choix.
la source
Je suis d'accord avec Icarus (j'aurais commenté si je pouvais), mais au lieu d'utiliser une classe CustomObject , j'utiliserais un dictionnaire (au cas où Facebook ajouterait quelque chose).
ou
la source
public IList<IDictionary<string, dynmaic>> data { get; set; }
Sérialisation:
Désérialisation ::
Pour désérialiser un objet dynamique
la source
Vous pouvez utiliser ces extensions
la source
Voici un autre site qui vous aidera avec tout le code dont vous avez besoin tant que vous disposez d'une chaîne JSON correctement formatée:
https://app.quicktype.io/
la source
Si vous utilisez .NET Core 3.0, vous pouvez utiliser System.Text.Json (qui est maintenant intégré) pour désérialiser JSON.
La première étape consiste à créer des classes pour modéliser le JSON. Il existe de nombreux outils qui peuvent vous y aider, et certaines des réponses ici les énumèrent.
Certaines options sont http://json2csharp.com , http://app.quicktype.io , ou utilisez Visual Studio (menu Edition → Collage spécial → Coller JSON comme classes ).
Ensuite, vous pouvez désérialiser en utilisant:
Si vous devez ajouter des paramètres, tels que la
camelCase
gestion, passez les paramètres du sérialiseur dans le désérialiseur comme ceci:la source