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

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 :-)

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;

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.


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;

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!


Le script n'existe pas
KansaiRobot

12
using System.Web.Script.Serialization; 

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


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.


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


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.


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.


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


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.