No se puede encontrar JavaScriptSerializer en .Net 4.0

297

Parece que no puedo encontrar el JavaScriptSerializerobjeto ni el System.Web.Script.Serializationespacio de nombres dentro de Visual Studio 2010. Necesito serializar algo a JSON, ¿qué se supone que debo usar?

Y sí, ya incluí el System.Web.Extensions(en System.Web.Extensions.dll) dentro del proyecto. ¿Por eso estoy sorprendido?

  • Sé que System.Web.Extensionsfue marcado como obsoleto en 3.5
Prisionero CERO
fuente
55
Tengo el mismo problema y debo decir que las respuestas son bastante inútiles. Me dirijo al ".NET Framework 4", no al ".NET 4 Client Profile". Me he referido al ensamblaje System.Web.Extensions. Pero cuando trato de usar el espacio de nombres System.Web.Script.Serialization, VS 2010 me dice "El script de tipo o espacio de nombres no existe en el espacio de nombres System.Web". ¿Alguien ha encontrado una solución real para esto? ¡Estoy perplejo!
twakjaco
Publicación relacionada aquí .
RBT

Respuestas:

523

Compruebe si incluyó la versión .net 4 de System.Web.Extensions- también hay una versión 3.5, pero no creo que funcione.

Estos pasos me funcionan:

  1. Crear una nueva aplicación de consola
  2. Cambie el destino a .net 4 en lugar de Perfil de cliente
  3. Agregar una referencia a System.Web.Extensions(4.0)
  4. Tener acceso a JavaScriptSerializerProgram.cs ahora :-)
Steffen
fuente
en vb.net no olvide "nuevo" y () como: Dim JsonConvert As New JavaScriptSerializer ()
zokaee hamid
125
  1. Haga clic derecho Referencesy haga Add Reference, luego de Assemblies->Frameworkseleccionar System.Web.Extensions.
  2. Ahora debería poder agregar lo siguiente a su archivo de clase:
    using System.Web.Script.Serialization;
Scott Johnson
fuente
perfecto, incluso olvidé hacer algo como eso gracias
Khalil Liraqui
¡Excelente! explicación detallada
charulatha krishnamoorthy
41

Desde el primer resultado de búsqueda en google:

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

Clase JavaScriptSerializer

Proporciona funcionalidades de serialización y deserialización para aplicaciones habilitadas para AJAX.

Jerarquía de herencia

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Espacio de nombres: System.Web.Script.Serialization

Ensamblado: System.Web.Extensions (en System.Web.Extensions.dll)

Por lo tanto, incluir System.Web.Extensions.dllcomo referencia.

Pablo
fuente
3
Dos años después, en un proyecto totalmente no relacionado: también ayuda si lo capitalizas correctamente>.> (No es JavascriptSerializer).
neminem
25

Estoy usando Visual Studio 2015 y finalmente me encontré con esta publicación.

Si para usar

JavaScriptSerializer json = new JavaScriptSerializer();

Debe hacer clic con el botón derecho en las referencias y en Ensamblajes -> Marco elegir

System.Web.Extensions

Luego agregue su referencia

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

Así es como se obtiene JavaScriptSerializer en su aplicación, apuntando .NET 4.0(completo)

using System.Web.Script.Serialization;

¡Esto debería permitirle crear un nuevo JavaScriptSerializerobjeto!

Alex Hopkins
fuente
Script no existe
KansaiRobot
12
using System.Web.Script.Serialization; 

está en ensamblado: System.Web.Extensions (System.Web.Extensions.dll)

Ema.H
fuente
10

¿Está apuntando al .NET 4 framework o al .NET 4 Client Profile?

Si está apuntando a este último, no encontrará esa clase. También es posible que le falte una referencia, probablemente una extensión dll.

Christopher Currens
fuente
.NET Framework 4. Y ya tengo 'System.Web.Extensions' incluido en el proyecto
Prisoner ZERO
¿Es este un proyecto que has actualizado desde una versión anterior de .net?
Christopher Currens
Tengo este problema con un proyecto que actualicé. Sin embargo, no parece resolverse utilizando la versión .net original (3.5) ...
user1003221
9

Para aquellos que parecen estar siguiendo las respuestas anteriores pero aún tienen el problema (por ejemplo, vea el primer comentario sobre la pregunta del afiche):

Probablemente esté trabajando en una solución con muchos proyectos. El proyecto en el que parece estar trabajando hace referencia a otros proyectos, pero en realidad está modificando un archivo de uno de los otros proyectos. Por ejemplo:

  • referencias del proyecto A System.Web.Extensions
  • proyecto A referencias proyecto B

Pero si el archivo que está modificando para usar System.Web.Script.Serializationestá en el proyecto B, entonces también necesitará agregar una referencia System.Web.Extensionen el proyecto B.

jltrem
fuente
8

¿Incluiste una referencia a System.Web.Extensions? Si hace clic en su primer enlace, dice en qué ensamblaje se encuentra.

Davy8
fuente
En ese caso, tal vez vea la respuesta de @ Christopher.
Davy8
5

Tienes que agregar la referencia al proyecto.

En Assemblies, hay un System.Web.Extensions Agregue eso.

Una vez hecho esto, ponga:

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

Eso funcionó para mí.

riahc3
fuente
3

Para que lo sepas, estoy usando Visual Studio 2013 y he tenido el mismo problema hasta que usé las Propiedades del proyecto para cambiar a 3.5 framework y volver a 4.5. Esto por alguna razón registró el .dll correctamente y pude usar System.Web.Extensions .

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Milán
fuente
3

Puede usar otra opción que es Newtonsoft.Json, puede instalarlo desde NuGet Package Manager.

Herramientas >> Nuget Package Manager >> Package Manager Console emitiendo un comando

Install-Package Newtonsoft.Json

o

mediante el uso de la GUI en Herramientas >> Administrador de paquetes Nuget >> Administrar paquetes NuGet para la solución ...

ingrese la descripción de la imagen aquí

Alexander Zaldostanov
fuente
Tenga en cuenta que esta es la recomendación documentada de Microsoft . En .Net Core, Microsoft ya ni siquiera ofrece JavaScriptSerializer (ni el resto de System.Web.Extensions).
Brian