web-dev-qa-db-fra.com

Impossible de trouver JavaScriptSerializer dans .Net 4.0

Je n'arrive pas à trouver l'objet JavaScriptSerializer , ni l'espace de nom System.Web.Script.Serialization dans Visual Studio 2010. Je dois sérialiser quelque chose en JSON, que suis-je censé utiliser?

Et oui, j'ai déjà inclus le System.Web.Extensions (dans System.Web.Extensions.dll) dans le projet. C'est pourquoi je suis choqué?

  • Je sais que System.Web.Extensions était marqué comme obsolète dans 3.5
284
Prisoner ZERO

Vérifiez si vous avez inclus la version .net 4 de System.Web.Extensions - il existe également une version 3.5, mais je ne pense pas que celle-ci fonctionne.

Ces étapes fonctionnent pour moi:

  1. Créer une nouvelle application console
  2. Changez la cible en .net 4 au lieu du profil client
  3. Ajouter une référence à System.Web.Extensions (4.0)
  4. Avoir accès à JavaScriptSerializer dans Program.cs maintenant :-)
507
Steffen
  1. Faites un clic droit References et faites Add Reference, puis à partir de Assemblies->Framework sélectionnez System.Web.Extensions.
  2. Vous devriez maintenant pouvoir ajouter les éléments suivants à votre fichier de classe:
    using System.Web.Script.Serialization;
116
Scott Johnson

Depuis le premier résultat de recherche sur google:

http://msdn.Microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

Classe JavaScriptSerializer

Fournit des fonctionnalités de sérialisation et de désérialisation pour les applications compatibles AJAX.

Hiérarchie d'héritage

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Espace de noms: System.Web.Script.Serialization

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

Donc, incluez System.Web.Extensions.dll comme référence.

41
Paul

J'utilise Visual Studio 2015 et j'ai finalement rencontré ce message.

Oui pour utiliser

JavaScriptSerializer json = new JavaScriptSerializer();

Vous devez cliquer avec le bouton droit sur références et sous Assemblages -> Cadre, choisissez

System.Web.Extensions

puis ajoutez votre référence

using System.Web.Script.Serialization;
21
Tom Stickel

Voici comment obtenir JavaScriptSerializer disponible dans votre application, en ciblant .NET 4.0 (complet)

using System.Web.Script.Serialization;

Cela devrait vous permettre de créer un nouvel objet JavaScriptSerializer!

15
Alex Hopkins
using System.Web.Script.Serialization; 

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

12
Ema.H

Vous ciblez le framework .NET 4 ou le profil client .NET 4?

Si vous ciblez ce dernier, vous ne trouverez pas cette classe. Vous pouvez également manquer une référence, probablement à une extension DLL.

10

Pour ceux qui semblent suivre les réponses ci-dessus mais ont toujours le problème (par exemple, voir le premier commentaire sur la question de l'affiche):

Vous travaillez probablement dans une solution avec de nombreux projets. Le projet sur lequel vous semblez travailler fait référence à d'autres projets, mais vous modifiez en fait un fichier à partir de l'un des autres projets. Par exemple:

  • références du projet A System.Web.Extensions
  • projet A référence projet B

Mais si le fichier que vous modifiez pour utiliser System.Web.Script.Serialization est dans le projet B, vous devrez également ajouter une référence à System.Web.Extension dans le projet B.

9
jltrem

Avez-vous inclus une référence à System.Web.Extensions? Si vous cliquez sur votre premier lien, il indique dans quelle assemblée il se trouve.

8
Davy8

Vous devez ajouter la référence au projet.

Dans Assemblies, il existe un System.Web.Extensions Add that.

Une fois cela fait, mettez:

    using System.Web;
    using System.Web.Script;
    using System.Web.Script.Serialization;

Cela a fonctionné pour moi.

5
riahc3

Vous pouvez utiliser une autre option, Newtonsoft.Json, que vous pouvez installer à partir de NuGet Package Manager.

Outils >> Gestionnaire de paquets Nuget >> Console du gestionnaire de paquets en émettant une commande

Install-Package Newtonsoft.Json

ou

en utilisant l'interface graphique à Outils >> Gestionnaire de paquets Nuget >> Gérer les paquets NuGet pour la solution ...

enter image description here

3

Juste pour que vous sachiez, j'utilise Visual Studio 2013 et j'ai le même problème jusqu'à ce que j'utilise les propriétés du projet pour basculer vers la structure 3.5 et revenir à la version 4.5. Cela pour une raison quelconque a enregistré le fichier .dll correctement et j'ai pu utiliser le System.Web.Extensions .

enter image description here

enter image description here

3
Milan