La sortie Json avec le moteur de vue Razor
J'ai un dictionary<string,string>
dans le cadre de mon modèle de vue. Ce que j'essaie de faire est de cycle de cet objet et de sortie comme un objet json. Ma raison pour cela est si je peux localiser mes fichiers de script client correctement.
La sortie de cette doit ressembler à quelque chose comme
var clientStrings = {"test":"yay","goodBye":"Nah"};
Des idées comment atteindre cet objectif correctement.
Merci d'avance.
OriginalL'auteur RubbleFord | 2010-12-06
Vous devez vous connecter pour publier un commentaire.
Vu que vous êtes sur mvc 3, vous aurez accès à JavaScriptSerializer. Vous devriez être en mesure de faire ce qui suit:
Cela va sérialiser votre dictionnaire json. Vous pouvez le faire dans le contrôleur avant d'envoyer le ViewData à la vue pour le rendu.
OriginalL'auteur Jeremy B.
Il est intégré dans MVC. Juste retour Json(yourobject).
OriginalL'auteur Matt Sherman
Vous pouvez également intégrer la libre Json.NET bibliothèque au sein de votre code.
Cette bibliothèque ne souffre pas de problèmes
JavascriptSerializer
a comme la référence circulaire problème.Ceci est un exemple de l'utilisation de la bibliothèque à la sortie JSON à partir d'un contrôleur de l'action
Si vous effectuez cette action, vous obtiendrez les résultats suivants
JsonNetResult est une simple classe wrapper autour des fonctionnalités de l'Json.NET de la bibliothèque.
Il fonctionne parfaitement 🙂 j'ai édité ma réponse pour votre plaisir
pourquoi utiliser ce cours est construit dans le Json(xxx)? Les avantages?
Tuliper: je ne peux pas confirmer avec certitude, mais je pense qu'en interne
Json(xxx)
utiliseJavaScriptSerializer
qui souffre de la référence circulaire problème dont vous pouvez lire à ce sujet ici et ici. Ma réponse est juste un addendum à la accepté de répondre à ce qui est correct à 100%JSON.NET a la possibilité de liste blanche des propriétés que vous voulez à la sortie via le JsonProperty attribut, voir stackoverflow.com/questions/2546138/.... En outre, JSON.NET peut sérialiser une propriété ayant un getter, mais pas de setter, qui la WCF DataContract sérialiseur JSON ne le peuvent pas.
OriginalL'auteur Lorenzo