Não foi possível encontrar o JavaScriptSerializer no .Net 4.0


297

Não consigo encontrar o JavaScriptSerializerobjeto nem o System.Web.Script.Serializationespaço para nome no Visual Studio 2010. Preciso serializar algo em JSON, o que devo usar?

E sim, eu já incluí o System.Web.Extensions(no System.Web.Extensions.dll) dentro do projeto. É por isso que estou chocado?

  • Eu sei que System.Web.Extensionsfoi marcado como obsoleto em 3.5

5
Tenho o mesmo problema e tenho que dizer que as respostas são bastante inúteis. Estou direcionando o ".NET Framework 4", não o ".NET 4 Client Profile". Eu já referenciados os System.Web.Extensions montagem. Mas, quando tento usar o espaço para nome System.Web.Script.Serialization, o VS 2010 me diz "O script de tipo ou espaço para nome não existe no espaço para nome System.Web". Alguém encontrou uma solução real para isso? Estou perplexo!
— Twakjaco

Post relacionado aqui .
— RBT

Respostas:


523

Verifique se você incluiu a versão .net 4 do System.Web.Extensions- há uma versão 3.5 também, mas acho que não funciona.

Essas etapas funcionam para mim:

  1. Crie um novo aplicativo de console
  2. Altere o destino para .net 4 em vez de Client Profile
  3. Adicione uma referência a System.Web.Extensions(4.0)
  4. Tenha acesso JavaScriptSerializerno Program.cs agora :-)

em vb.net não se esqueça "novo" e () como: Dim JsonConvert As New JavaScriptSerializer ()
— Hamid zokaee

125
  1. Clique com o botão direito do mouse Referencese faça e Add Reference, em seguida, Assemblies->Frameworkselecione System.Web.Extensions.
  2. Agora você deve poder adicionar o seguinte ao seu arquivo de classe:
    using System.Web.Script.Serialization;

Perfeito eu até esqueci de fazer algo como thaht obrigado
— Khalil Liraqui

Ótimo! explicação detalhada
— charulatha krishnamoorthy

41

Desde o primeiro resultado da pesquisa no google:

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

Classe JavaScriptSerializer

Fornece funcionalidade de serialização e desserialização para aplicativos habilitados para AJAX.

Hierarquia de herança

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Espaço para nome: System.Web.Script.Serialization

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

Então, inclua System.Web.Extensions.dllcomo referência.


3
Dois anos depois, em um projeto totalmente independente: também ajuda se você o capitalizar corretamente>.> (Não é JavascriptSerializer).
— Neminem

25

Estou usando o Visual Studio 2015 e finalmente encontrei esta postagem.

Sim para usar

JavaScriptSerializer json = new JavaScriptSerializer();

Você deve clicar com o botão direito do mouse em referências e, em Assemblies -> Framework, escolha

System.Web.Extensions

Em seguida, adicione sua referência

using System.Web.Script.Serialization;

15

Veja como disponibilizar o JavaScriptSerializer no seu aplicativo, segmentando .NET 4.0(completo)

using System.Web.Script.Serialization;

Isso deve permitir que você crie um novo JavaScriptSerializerobjeto!


Script não existe
— KansaiRobot

12
using System.Web.Script.Serialization; 

está na montagem: System.Web.Extensions (System.Web.Extensions.dll)


10

Você está direcionando a estrutura .NET 4 ou o .NET 4 Client Profile?

Se você estiver segmentando o último, não encontrará essa classe. Você também pode estar perdendo uma referência, provavelmente uma DLL de extensões.


.NET Framework 4. E eu já tenho 'System.Web.Extensions' incluído no projeto
— Prisoner ZERO

Este é um projeto que você atualizou de uma versão anterior do .net?
— Christopher Currens

Estou tendo esse problema com um projeto que atualizei. Ele não parece ser resolvido usando a versão original .net (3,5) embora ...
— user1003221

9

Para aqueles que parecem estar seguindo as respostas acima, mas ainda têm o problema (por exemplo, veja o primeiro comentário sobre a pergunta do pôster):

Você provavelmente está trabalhando em uma solução com muitos projetos. O projeto que você parece estar trabalhando em referência a outros projetos, mas na verdade você está modificando um arquivo de um dos outros projetos. Por exemplo:

  • referências do projeto A System.Web.Extensions
  • o projeto A faz referência ao projeto B

Mas se o arquivo que você está modificando para usar System.Web.Script.Serializationestiver no projeto B, será necessário adicionar uma referência ao System.Web.Extensionprojeto B também.


8

Você incluiu uma referência a System.Web.Extensions? Se você clicar no seu primeiro link, ele diz em qual montagem está.


Nesse caso, talvez verifique a resposta de @ Christopher.
— precisa saber é o seguinte

5

Você precisa adicionar a referência ao projeto.

Em Assemblies, há um System.Web.Extensions Adicione isso.

Feito isso, coloque:

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

Isso funcionou para mim.


3

Só para você saber, estou usando o Visual Studio 2013 e tive o mesmo problema até usar as propriedades do projeto para alternar para a estrutura 3.5 e voltar para a 4.5. Por algum motivo, isso registrou o .dll corretamente e eu poderia usar o System.Web.Extensions .

insira a descrição da imagem aqui

insira a descrição da imagem aqui


3

Você pode usar outra opção, que é o Newtonsoft.Json, pode instalá-lo no NuGet Package Manager.

Ferramentas >> Nuget Package Manager >> Console do Gerenciador de Pacotes emitindo comando

Install-Package Newtonsoft.Json

ou

usando a GUI em Ferramentas >> Nuget Package Manager >> Gerenciar pacotes NuGet para solução ...

insira a descrição da imagem aqui


Observe que esta é a recomendação documentada da Microsoft . No .Net Core, a Microsoft nem oferece mais o JavaScriptSerializer (nem o restante do System.Web.Extensions).
— 27718 Brian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.