Impossible de trouver JavaScriptSerializer dans .Net 4.0

297

Je n'arrive pas à trouver l' JavaScriptSerializerobjet ni l' System.Web.Script.Serializationespace de noms dans Visual Studio 2010. J'ai besoin de 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 a System.Web.Extensionsété marqué comme obsolète en 3.5
Prisonnier ZERO
la source
5
J'ai le même problème, et je dois dire que les réponses sont assez inutiles. Je cible le ".NET Framework 4", pas le ".NET 4 Client Profile". Je l' ai mentionné l'Assemblée System.Web.Extensions. Mais lorsque j'essaie d'utiliser l'espace de noms System.Web.Script.Serialization, VS 2010 me dit "Le script de type ou d'espace de noms n'existe pas dans l'espace de noms System.Web". Quelqu'un a-t-il trouvé une vraie solution à cela? Je suis perplexe!
twakjaco
Article connexe ici .
RBT

Réponses:

523

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 cela fonctionne.

Ces étapes fonctionnent pour moi:

  1. Créer une nouvelle application console
  2. Modifiez la cible en .net 4 au lieu du profil client
  3. Ajouter une référence à System.Web.Extensions(4.0)
  4. Accédez JavaScriptSerializermaintenant à Program.cs :-)
Steffen
la source
dans vb.net n'oubliez pas "nouveau" et () comme: Dim JsonConvert As New JavaScriptSerializer ()
zokaee hamid
125
  1. Faites un clic droit Referenceset faites Add Reference, puis Assemblies->Frameworksélectionnez System.Web.Extensions.
  2. Vous devriez maintenant pouvoir ajouter ce qui suit à votre fichier de classe:
    using System.Web.Script.Serialization;
Scott Johnson
la source
parfait j'ai même oublié de faire quelque chose comme ça merci
Khalil Liraqui
Génial! explication détaillée
charulatha krishnamoorthy
41

Du 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.dllcomme référence.

Paul
la source
3
Deux ans plus tard, sur un projet totalement indépendant: cela aide aussi si vous le capitalisez correctement>.> (Ce n'est pas JavascriptSerializer).
neminem
25

J'utilise Visual Studio 2015 et j'ai finalement parcouru ce post.

Oui pour utiliser

JavaScriptSerializer json = new JavaScriptSerializer();

Vous devez faire un clic droit sur les références et sous Assemblies -> Framework choisir

System.Web.Extensions

Ajoutez ensuite votre référence

using System.Web.Script.Serialization;
Tom Stickel
la source
15

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

using System.Web.Script.Serialization;

Cela devrait vous permettre de créer un nouvel JavaScriptSerializerobjet!

Alex Hopkins
la source
Le script n'existe pas
KansaiRobot
12
using System.Web.Script.Serialization; 

est dans l'assembly: System.Web.Extensions (System.Web.Extensions.dll)

Ema.H
la source
10

Visez-vous 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 DLL d'extensions.

Christopher Currens
la source
.NET Framework 4. Et j'ai déjà 'System.Web.Extensions' inclus dans le projet
Prisoner ZERO
S'agit-il d'un projet que vous avez mis à niveau à partir d'une version antérieure de .net?
Christopher Currens
J'ai ce problème avec un projet que j'ai mis à niveau. Il ne semble pas être résolu en utilisant la version .net d'origine (3.5) cependant ...
user1003221
9

Pour ceux qui semblent suivre les réponses ci-dessus mais qui 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 dans lequel vous semblez travailler fait référence à d'autres projets, mais vous modifiez actuellement un fichier de l'un des autres projets. Par exemple:

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

Mais si le fichier que vous modifiez pour utiliser se System.Web.Script.Serializationtrouve dans le projet B, vous devrez également ajouter une référence System.Web.Extensiondans le projet B.

jltrem
la source
8

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

Davy8
la source
Dans ce cas, consultez la réponse de @ Christopher.
Davy8
5

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

Dans les assemblys, il y a un System.Web.Extensions Ajoutez cela.

Une fois cela fait, mettez:

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

Cela a fonctionné pour moi.

riahc3
la source
3

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

entrez la description de l'image ici

entrez la description de l'image ici

Milan
la source
3

Vous pouvez utiliser une autre option qui est Newtonsoft.Json, vous pouvez l'installer depuis NuGet Package Manager.

Outils >> Nuget Package Manager >> Package Manager Console en émettant une commande

Install-Package Newtonsoft.Json

ou

en utilisant l'interface graphique à Outils >> Nuget Package Manager >> Gérer les packages NuGet pour la solution ...

entrez la description de l'image ici

Alexander Zaldostanov
la source
Notez qu'il s'agit de la recommandation documentée de Microsoft . Sur .Net Core, Microsoft n'offre même plus JavaScriptSerializer (ni le reste de System.Web.Extensions).
Brian