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
Prisioneiro ZERO
fonte
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 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 :-)
Steffen
fonte
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;
Scott Johnson
fonte
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.

Paulo
fonte
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;
Tom Stickel
fonte
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!

Alex Hopkins
fonte
Script não existe
KansaiRobot
12
using System.Web.Script.Serialization; 

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

Ema.H
fonte
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.

Christopher Currens
fonte
.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.

jltrem
fonte
8

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

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

riahc3
fonte
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

Milão
fonte
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

Alexander Zaldostanov
fonte
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