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