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

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

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;

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.


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;

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!


Script no existe
— KansaiRobot

12
using System.Web.Script.Serialization; 

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


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.


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


8

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


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


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í


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í


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.