web-dev-qa-db-fra.com

Problème d'espace de noms JavaScriptSerializer

J'ai un problème à essayer d'implémenter le JavaScriptSerializer pour analyser une chaîne JSON reçue d'un serveur.

J'ai implémenté le code suivant:

responseFromServer = readStream.ReadLine();
JavaScriptSerializer ser = new JavaScriptSerializer();
var dict = new JavaScriptSerializer().Deserialize<Dictionary<string, object>>(responseFromServer);
var status = dict["notificationType"]; 
Debug.WriteLine(status);

J'ai ajouté using System.Web.Script.Serialization;

Visual C # 2010 Express me dit que le nom de l'espace de noms Script n'existe pas dans l'espace de noms System.Web. Par conséquent, le JavaScriptSerializer n'est pas valide.

Qu'est-ce qui me manque pour l'utiliser, ou existe-t-il une meilleure façon d'analyser la chaîne JSON?

14
Jeff

JavaScriptSerializer est situé dans System.Web.Extensions Assemblée. Vous devez l'ajouter à vos références de projet.

Vous pouvez obtenir ces informations dans MSDN

Assembly: System.Web.Extensions (dans System.Web.Extensions.dll)

26
Dmitry Dovgopoly
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var dict = oSerializer.Deserialize<Dictionary<string, object>>(responseFromServer);

Cela vous aidera à obtenir la valeur

3
Lijin Durairaj

Ajouter une référence System.Web.Extensions

puis tapez using System.Web.Script.Serialization;

Vous devez maintenant valider JavaScriptSerializer.

Vous pouvez utiliser une meilleure approche en ajoutant Newtonsoft.Json.dll via

Ajouter une référence. Voir les détails ici: http://json.codeplex.com/

2
Md Shahriar

J'ai rencontré ce problème et j'ai ajouté une référence de projet pour System.Web.Extensions, essayez d'ajouter cette référence à votre projet et voyez si cela aide

0
DROP TABLE users