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.