Nie można znaleźć JavaScriptSerializer w .Net 4.0

297

Nie mogę znaleźć JavaScriptSerializerobiektu ani System.Web.Script.Serializationprzestrzeni nazw w Visual Studio 2010. Muszę serializować coś do JSON, czego mam użyć?

I tak, już włączyłem System.Web.Extensions(w System.Web.Extensions.dll) do projektu. Dlatego jestem zszokowany?

  • Wiem, że System.Web.Extensionszostał oznaczony jako przestarzały w 3.5
Więzień ZERO
źródło
5
Mam ten sam problem i muszę powiedzieć, że odpowiedzi są bezużyteczne. Mam na celu „.NET Framework 4”, a nie „.NET 4 Client Profile”. I nie odwołuje się System.Web.Extensions montaż. Ale kiedy próbuję użyć przestrzeni nazw System.Web.Script.Serialization, VS 2010 mówi mi: „Skrypt typu lub przestrzeni nazw nie istnieje w przestrzeni nazw System.Web”. Czy ktoś znalazł na to prawdziwe rozwiązanie? Jestem zakłopotany!
twakjaco
Powiązany post tutaj .
RBT

Odpowiedzi:

523

Sprawdź, czy włączyłeś wersję .net 4 System.Web.Extensions- jest też wersja 3.5, ale nie sądzę, żeby działała.

Te kroki działają dla mnie:

  1. Utwórz nową aplikację konsoli
  2. Zmień cel na .net 4 zamiast profilu klienta
  3. Dodaj odniesienie do System.Web.Extensions(4.0)
  4. Masz teraz dostęp do JavaScriptSerializerw Program.cs :-)
Steffen
źródło
w vb.net nie zapomnij o „nowych” i () takich jak: Dim JsonConvert As New JavaScriptSerializer ()
zokaee hamid
124
  1. Kliknij prawym przyciskiem myszy Referencesi zrób Add Reference, a następnie Assemblies->Frameworkwybierz System.Web.Extensions.
  2. Teraz powinieneś być w stanie dodać następujące elementy do pliku zajęć:
    using System.Web.Script.Serialization;
Scott Johnson
źródło
idealnie, nawet zapomniałem zrobić coś takiego, dziękuję
Khalil Liraqui
Świetny! szczegółowe wyjaśnienie
charulatha krishnamoorthy
41

Od pierwszego wyniku wyszukiwania w Google:

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

JavaScriptSerializer Class

Zapewnia funkcje serializacji i deserializacji dla aplikacji obsługujących AJAX.

Hierarchia dziedziczenia

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Przestrzeń nazw: System.Web.Script.Serialization

Montaż: System.Web.Extensions (w System.Web.Extensions.dll)

Dołącz System.Web.Extensions.dlljako odniesienie.

Paweł
źródło
3
Dwa lata później przy całkowicie niepowiązanym projekcie: pomaga to również, jeśli poprawnie go wykorzystujesz>.> (To nie jest JavascriptSerializer).
neminem
25

Korzystam z programu Visual Studio 2015 i wreszcie natknąłem się na ten post.

Tak, aby użyć

JavaScriptSerializer json = new JavaScriptSerializer();

Musisz kliknąć prawym przyciskiem myszy odniesienia i w części Zespoły -> Wybierz ramy

System.Web.Extensions

Następnie dodaj referencję

using System.Web.Script.Serialization;
Tom Stickel
źródło
15

Oto jak uzyskać dostęp do JavaScriptSerializer w Twojej aplikacji, targetowanie .NET 4.0(pełna)

using System.Web.Script.Serialization;

To powinno pozwolić ci stworzyć nowy JavaScriptSerializerobiekt!

Alex Hopkins
źródło
Skrypt nie istnieje
KansaiRobot
12
using System.Web.Script.Serialization; 

jest w zestawie: System.Web.Extensions (System.Web.Extensions.dll)

Ema.H
źródło
10

Czy kierujesz się na platformę .NET 4 lub profil klienta .NET 4?

Jeśli celujesz w to drugie, nie znajdziesz tej klasy. Być może brakuje Ci też odniesienia, prawdopodobnie do biblioteki DLL rozszerzeń.

Christopher Currens
źródło
.NET Framework 4. I mam już w pakiecie „System.Web.Extensions”
Prisoner ZERO
Czy to projekt, który uaktualniłeś z wcześniejszej wersji .net?
Christopher Currens,
Mam ten problem z uaktualnionym projektem. Wygląda na to, że problem nie został rozwiązany przy użyciu oryginalnej wersji .net (3.5) ...
user1003221,
9

Dla tych, którzy wydają się postępować zgodnie z powyższymi odpowiedziami, ale nadal mają problem (np. Zobacz pierwszy komentarz do pytania postera):

Prawdopodobnie pracujesz nad rozwiązaniem z wieloma projektami. Projekt, który wydaje się pracować w odniesieniu do innych projektów, ale tak naprawdę modyfikujesz plik z jednego z innych projektów. Na przykład:

  • referencje do projektu A. System.Web.Extensions
  • projekt A odwołuje się do projektu B

Ale jeśli plik, który modyfikujesz do użycia, System.Web.Script.Serializationznajduje się w projekcie B, musisz również dodać odniesienie do System.Web.Extensionprojektu B.

jltrem
źródło
8

Czy zamieściłeś odniesienie do System.Web.Extensions? Po kliknięciu pierwszego łącza wyświetli się informacja, w którym zespole się znajduje.

Davy8
źródło
W takim przypadku może sprawdź odpowiedź @ Christophera.
Davy8
5

Musisz dodać odniesienie do projektu.

W złożeniach znajduje się System.Web.Extensions Dodaj to.

Po zakończeniu włóż:

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

To działało dla mnie.

riahc3
źródło
3

Wiem tylko, że używam Visual Studio 2013 i miałem ten sam problem, dopóki nie użyłem Właściwości projektu, aby przełączyć się do frameworka 3.5 i wrócić do 4.5. To z jakiegoś powodu poprawnie zarejestrowało .dll i mogłem skorzystać z System.Web.Extensions .

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

Mediolan
źródło
3

Możesz użyć innej opcji, którą jest Newtonsoft.Json, możesz zainstalować ją z NuGet Package Manager.

Narzędzia >> Menedżer pakietów Nuget >> Konsola Menedżera pakietów, wydając polecenie

Install-Package Newtonsoft.Json

lub

za pomocą GUI w Narzędzia >> Menedżer pakietów Nuget >> Zarządzaj pakietami NuGet dla rozwiązania ...

wprowadź opis zdjęcia tutaj

Alexander Zaldostanov
źródło
Pamiętaj, że jest to udokumentowane zalecenie Microsoft . W .Net Core Microsoft nie oferuje już nawet JavaScriptSerializer (ani reszty System.Web.Extensions).
Brian