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.