2013-08-02 4 views
4

Je reçois une réponse API JSON tierce via Javascript, que j'ajoute au serveur. Ici j'essaye de convertir ceci en objet. J'ai vu un exemple simple de ceci en ligne en utilisant une classe personnalisée, mais le problème dans mon cas est que le nombre de champs peut changer. Dans un cas, ils peuvent être juste: UserName: Blah, Age: Blah ... Dans un autre cas, il peut être: UserName: Blah, Age: Blah, jeu préféré: Blah.Désérialise une chaîne JSON avec un nombre variable d'éléments

Quelle est la meilleure solution ici?

Merci pour toute contribution. PS: j'essaie ce code ci-dessous, mais j'obtiens une erreur: les amis ne sont pas pris en charge pour la désérialisation d'un tableau.

public class Friends 
{ 
    public IList<IDictionary<string,string>>data {get;set;} 
} 

protected void UpdateTrigger_Click(object sender, EventArgs e) 
{ 
    Friends fbFriends = new System.Web.Script.Serialization.JavaScriptSerializer().Deserialize<Friends>(Hidden1.Value); 
} 
+0

Si les champs ne sont pas définis à l'avance, pourquoi le convertir en un objet fortement typé, puisque vous ne connaîtrez pas les noms des membres? –

+0

Les champs seront connus à l'avance, mais ils varieront. – RealityDysfunction

+1

Alors pourquoi ne pas avoir une grande classe qui contient tous les membres possibles, et toujours désérialiser en sur objet de ce type? Les propriétés manquantes seront simplement nulles. –

Répondre

3

Utilisez Json.NET - vous pouvez deserialise dans un objet .NET personnalisé qui expose toutes les propriétés et faire if (thing.Property != null) pour obtenir les valeurs spécifiques, ou vous pourriez deserialise à dynamic.

+0

Cela ressemble à une excellente option. Malheureusement, mon entreprise héberge l'environnement de développement sur un serveur de haute sécurité sans accès à Internet, donc je ne peux pas installer de DLL tierces. Des alternatives? – RealityDysfunction

+0

Maintenant, JSON.NET est inclus dans le monde ASP.NET prêt à l'emploi, donc je dirais que vous pouvez le considérer comme sûr, et ne vous inquiétez pas qu'il s'agisse d'une bibliothèque tierce. –

+0

Comme @JoeEnos mentionné, json.net est inclus dans les modèles de projet ASP.NET pour Visual Studio, donc si vous utilisez VS2012, vous l'aurez probablement de toute façon (peut-être pas la dernière version). A défaut, pouvez-vous leur demander d'en mettre une copie à disposition (téléchargement sur un autre serveur et transfert) Je comprends le besoin de sécurité mais cela ne devrait pas vous empêcher d'utiliser des frameworks tiers qui vous faciliteront la vie - surtout s'ils sont open source et recommandé par Microsoft eux-mêmes. –

Questions connexes