JavaScriptSerializer kann in .Net 4.0 nicht gefunden werden

297

Ich kann weder das JavaScriptSerializerObjekt noch den System.Web.Script.SerializationNamespace in Visual Studio 2010 finden. Ich muss etwas für JSON serialisieren. Was soll ich verwenden?

Und ja, ich habe die System.Web.Extensions(in System.Web.Extensions.dll) bereits in das Projekt aufgenommen. Welches ist, warum ich schockiert bin?

  • Ich weiß, System.Web.Extensionswurde in 3.5 als veraltet markiert
Gefangener NULL
quelle
5
Ich habe das gleiche Problem und ich muss sagen, dass die Antworten ziemlich nutzlos sind. Ich ziele auf ".NET Framework 4" ab, nicht auf ".NET 4-Clientprofil". Ich habe auf die System.Web.Extensions-Assembly verwiesen. Wenn ich jedoch versuche, den System.Web.Script.Serialization-Namespace zu verwenden, sagt VS 2010 "Der Typ oder das Namespace-Skript ist im Namespace System.Web nicht vorhanden". Hat jemand eine echte Lösung dafür gefunden? Ich bin ratlos!
Twakjaco
In Verbindung stehender Beitrag hier .
RBT

Antworten:

523

Überprüfen Sie, ob Sie die .net 4-Version von aufgenommen haben System.Web.Extensions- es gibt auch eine 3.5-Version, aber ich glaube nicht, dass eine funktioniert.

Diese Schritte funktionieren für mich:

  1. Erstellen Sie eine neue Konsolenanwendung
  2. Ändern Sie das Ziel in .net 4 anstelle von Client Profile
  3. Fügen Sie einen Verweis auf System.Web.Extensions(4.0) hinzu.
  4. Habe JavaScriptSerializerjetzt Zugriff auf in Program.cs :-)
Steffen
quelle
in vb.net nicht vergessen "neu" und () wie: Dim JsonConvert As New JavaScriptSerializer ()
zokaee hamid
124
  1. Klicken Sie mit der rechten Maustaste Referencesund Add Referencedann auf Assemblies->FrameworkAuswählen System.Web.Extensions.
  2. Jetzt sollten Sie in der Lage sein, Ihrer Klassendatei Folgendes hinzuzufügen:
    using System.Web.Script.Serialization;
Scott Johnson
quelle
perfekt Ich habe sogar vergessen, so etwas zu tun, danke
Khalil Liraqui
Großartig! detaillierte Erklärung
charulatha krishnamoorthy
41

Aus dem ersten Suchergebnis bei Google:

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

JavaScriptSerializer-Klasse

Bietet Serialisierungs- und Deserialisierungsfunktionen für AJAX-fähige Anwendungen.

Vererbungshierarchie

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Namespace: System.Web.Script.Serialization

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

Fügen Sie also System.Web.Extensions.dllals Referenz hinzu.

Paul
quelle
3
Zwei Jahre später zu einem völlig unabhängigen Projekt: Es hilft auch, wenn Sie es richtig großschreiben>.> (Es ist nicht JavascriptSerializer).
Neminem
25

Ich verwende Visual Studio 2015 und bin schließlich auf diesen Beitrag gestoßen.

Ja, um zu verwenden

JavaScriptSerializer json = new JavaScriptSerializer();

Sie müssen mit der rechten Maustaste auf Referenzen klicken und unter Baugruppen -> Framework auswählen

System.Web.Extensions

Fügen Sie dann Ihre Referenz hinzu

using System.Web.Script.Serialization;
Tom Stickel
quelle
15

So erhalten Sie JavaScriptSerializer in Ihrer Anwendung verfügbar, zielgerichtet .NET 4.0(vollständig)

using System.Web.Script.Serialization;

Dies sollte es Ihnen ermöglichen, ein neues JavaScriptSerializerObjekt zu erstellen !

Alex Hopkins
quelle
Skript existiert nicht
KansaiRobot
12
using System.Web.Script.Serialization; 

befindet sich in Assembly: System.Web.Extensions (System.Web.Extensions.dll)

Ema.H
quelle
10

Zielen Sie auf das .NET 4-Framework oder das .NET 4-Clientprofil ab?

Wenn Sie auf Letzteres abzielen, werden Sie diese Klasse nicht finden. Möglicherweise fehlt Ihnen auch ein Verweis auf eine Erweiterungs-DLL.

Christopher Currens
quelle
.NET Framework 4. Und ich habe bereits 'System.Web.Extensions' im Projekt enthalten
Prisoner ZERO
Ist dies ein Projekt, das Sie von einer früheren Version von .net aktualisiert haben?
Christopher Currens
Ich habe dieses Problem mit einem Projekt, das ich aktualisiert habe. Es scheint jedoch nicht mit der ursprünglichen .net-Version (3.5) gelöst zu werden ...
user1003221
9

Für diejenigen, die den obigen Antworten zu folgen scheinen, aber dennoch das Problem haben (siehe z. B. den ersten Kommentar zur Frage des Posters):

Sie arbeiten wahrscheinlich mit vielen Projekten an einer Lösung. Das Projekt, in dem Sie anscheinend arbeiten, verweist auf andere Projekte, aber Sie ändern tatsächlich eine Datei aus einem der anderen Projekte. Zum Beispiel:

  • Projekt A Referenzen System.Web.Extensions
  • Projekt A referenziert Projekt B.

Wenn sich die zu ändernde Datei System.Web.Script.Serializationjedoch in Projekt B befindet, müssen Sie auch System.Web.Extensionin Projekt B einen Verweis hinzufügen .

jltrem
quelle
8

Haben Sie einen Verweis auf aufgenommen System.Web.Extensions? Wenn Sie auf Ihren ersten Link klicken, wird angezeigt, in welcher Baugruppe er sich befindet.

Davy8
quelle
In diesem Fall lesen Sie vielleicht die Antwort von @ Christopher.
Davy8
5

Sie müssen den Verweis auf das Projekt hinzufügen.

In Baugruppen gibt es eine System.Web.Extensions. Fügen Sie diese hinzu.

Sobald dies erledigt ist, setzen Sie:

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

Das hat bei mir funktioniert.

riahc3
quelle
3

Damit Sie wissen, verwende ich Visual Studio 2013 und hatte das gleiche Problem, bis ich die Projekteigenschaften verwendet habe, um zu 3.5 Framework und zurück zu 4.5 zu wechseln. Aus irgendeinem Grund wurde die DLL ordnungsgemäß registriert und ich konnte die System.Web.Extensions verwenden .

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Mailand
quelle
3

Sie können eine andere Option verwenden, nämlich Newtonsoft.Json. Sie können sie über NuGet Package Manager installieren.

Tools >> Nuget Package Manager >> Package Manager-Konsole durch Ausgabe eines Befehls

Install-Package Newtonsoft.Json

oder

Verwenden Sie die grafische Benutzeroberfläche unter Extras >> Nuget Package Manager >> Verwalten von NuGet-Paketen für die Lösung ...

Geben Sie hier die Bildbeschreibung ein

Alexander Zaldostanov
quelle
Beachten Sie, dass dies die dokumentierte Empfehlung von Microsoft ist . Auf .Net Core bietet Microsoft nicht einmal mehr JavaScriptSerializer an (und auch nicht den Rest von System.Web.Extensions).
Brian