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

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

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;

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.


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;

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 !


Skript existiert nicht
KansaiRobot

12
using System.Web.Script.Serialization; 

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


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.


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


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.


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.


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


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.