Impossibile trovare JavaScriptSerializer in .Net 4.0


297

Non riesco a trovare l' JavaScriptSerializeroggetto né lo System.Web.Script.Serializationspazio dei nomi in Visual Studio 2010. Devo serializzare qualcosa su JSON che cosa dovrei usare?

E sì, ho già incluso System.Web.Extensions(in System.Web.Extensions.dll) all'interno del progetto. È per questo che sono scioccato?

  • So che è System.Web.Extensionsstato contrassegnato come obsoleto in 3.5

5
Ho lo stesso problema e devo dire che le risposte sono piuttosto inutili. Mi rivolgo a ".NET Framework 4", non a "Profilo client .NET 4". Ho fatto riferimento al gruppo System.Web.Extensions. Ma quando provo ad usare lo spazio dei nomi System.Web.Script.Serialization, VS 2010 mi dice "Lo script del tipo o dello spazio dei nomi non esiste nello spazio dei nomi System.Web". Qualcuno ha trovato una vera soluzione per questo? Sono perplesso!
— twakjaco,

Post correlato qui .
— RBT

Risposte:


523

Controlla se hai incluso la versione .net 4 di System.Web.Extensions- c'è anche una versione 3.5, ma non penso che funzioni.

Questi passaggi funzionano per me:

  1. Crea una nuova applicazione console
  2. Modificare la destinazione in .net 4 anziché in Profilo client
  3. Aggiungi un riferimento a System.Web.Extensions(4.0)
  4. JavaScriptSerializerOra puoi accedere a in Program.cs :-)

in vb.net non dimenticare "new" e () come: Dim JsonConvert As New JavaScriptSerializer ()
— zokaee hamid

125
  1. Fare clic con il tasto destro Referencese fare Add Reference, quindi Assemblies->Frameworkselezionare System.Web.Extensions.
  2. Ora dovresti essere in grado di aggiungere quanto segue al tuo file di classe:
    using System.Web.Script.Serialization;

perfetto, ho persino dimenticato di fare qualcosa del genere, grazie
— Khalil Liraqui,

Grande! spiegazione dettagliata
— charulatha krishnamoorthy

41

Dal primo risultato di ricerca su google:

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

Classe JavaScriptSerializer

Fornisce funzionalità di serializzazione e deserializzazione per applicazioni abilitate per AJAX.

Gerarchia ereditaria

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Spazio dei nomi: System.Web.Script.Serialization

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

Quindi, includi System.Web.Extensions.dllcome riferimento.


3
Due anni dopo, su un progetto totalmente indipendente: aiuta anche a capitalizzare correttamente>.> (Non è JavascriptSerializer).
— neminem

25

Sto usando Visual Studio 2015 e finalmente ho incontrato questo post.

Sì per usare

JavaScriptSerializer json = new JavaScriptSerializer();

È necessario fare clic con il tasto destro del mouse su riferimenti e in Assiemi -> Framework scegliere

System.Web.Extensions

Quindi aggiungi il tuo riferimento

using System.Web.Script.Serialization;

15

Ecco come rendere disponibile JavaScriptSerializer nella tua applicazione, targeting .NET 4.0(completo)

using System.Web.Script.Serialization;

Questo dovrebbe permetterti di creare un nuovo JavaScriptSerializeroggetto!


Lo script non esiste
— KansaiRobot

12
using System.Web.Script.Serialization; 

è in assembly: System.Web.Extensions (System.Web.Extensions.dll)


10

Stai prendendo di mira il framework .NET 4 o il profilo client .NET 4?

Se stai prendendo di mira quest'ultima, non troverai quella classe. Potrebbe anche mancare un riferimento, probabilmente a una DLL di estensioni.


.NET Framework 4. E ho già 'System.Web.Extensions' inclusi nel progetto
— Prigioniero ZERO

È un progetto che hai aggiornato da una versione precedente di .net?
— Christopher Currens,

Sto riscontrando questo problema con un progetto che ho aggiornato. Non sembra essere risolto utilizzando la versione originale .net (3.5) però ...
— user1003221

9

Per coloro che sembrano seguire le risposte sopra ma hanno ancora il problema (ad esempio, vedere il primo commento sulla domanda del poster):

Probabilmente stai lavorando a una soluzione con molti progetti. Sembra che il progetto stia lavorando a riferimenti ad altri progetti, ma in realtà stai modificando un file da uno degli altri progetti. Per esempio:

  • riferimenti al progetto A. System.Web.Extensions
  • progetto A referenze progetto B

Ma se il file che si sta modificando da usare System.Web.Script.Serializationè nel progetto B, sarà necessario aggiungere anche un riferimento al System.Web.Extensionprogetto B.


8

Hai incluso un riferimento a System.Web.Extensions? Se fai clic sul tuo primo link, dice in quale assembly si trova.


In tal caso forse dai un'occhiata alla risposta di @Cristherher.
— Davy8

5

Devi aggiungere il riferimento al progetto.

Negli assiemi c'è un System.Web.Extensions che aggiunge.

Fatto ciò, inserisci:

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

Questo ha funzionato per me.


3

Proprio per questo sai, sto usando Visual Studio 2013 e ho avuto lo stesso problema fino a quando non ho usato le proprietà del progetto per passare al framework 3.5 e tornare alla 4.5. Questo per qualche motivo ha registrato correttamente il .dll e ho potuto usare System.Web.Extensions .

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


3

È possibile utilizzare un'altra opzione che è Newtonsoft.Json, è possibile installarlo da NuGet Package Manager.

Strumenti >> Nuget Package Manager >> Console di gestione pacchetti emettendo il comando

Install-Package Newtonsoft.Json

o

utilizzando la GUI in Strumenti >> Gestione pacchetti Nuget >> Gestisci pacchetti NuGet per soluzione ...

inserisci qui la descrizione dell'immagine


Si noti che questa è la raccomandazione documentata di Microsoft . Su .Net Core, Microsoft non offre più nemmeno JavaScriptSerializer (né il resto di System.Web.Extensions).
— Brian
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.