Не удается найти JavaScriptSerializer в .Net 4.0

297

Кажется, я не могу найти JavaScriptSerializerни объект, ни System.Web.Script.Serializationпространство имен в Visual Studio 2010. Мне нужно что-то сериализовать в JSON, что я должен использовать?

И да, я уже включил System.Web.Extensions(в System.Web.Extensions.dll) в проект. Вот почему я в шоке?

Узник ноль
источник
5
У меня та же проблема, и я должен сказать, что ответы довольно бесполезны. Я нацеливаюсь на .NET Framework 4, а не на .NET 4 Client Profile. Я уже ссылается на System.Web.Extensions сборки. Но когда я пытаюсь использовать пространство имен System.Web.Script.Serialization, VS 2010 сообщает мне «Тип или сценарий пространства имен не существует в пространстве имен System.Web». Кто-нибудь нашел реальное решение для этого? Я в тупике!
Twakjaco
Связанный пост здесь .
RBT

Ответы:

523

Проверьте, включили ли вы версию .net 4 System.Web.Extensions- есть и версия 3.5, но я не думаю, что она работает.

Эти шаги работают для меня:

  1. Создать новое консольное приложение
  2. Измените цель на .net 4 вместо профиля клиента
  3. Добавить ссылку на System.Web.Extensions(4.0)
  4. Иметь доступ к JavaScriptSerializerProgram.cs сейчас :-)
Штеффен
источник
в vb.net не забывайте "new" и (), например: Dim JsonConvert As New JavaScriptSerializer ()
zokaee hamid
125
  1. Щелкните правой кнопкой мыши Referencesи сделайте Add Reference, затем Assemblies->Frameworkвыберите System.Web.Extensions.
  2. Теперь вы сможете добавить следующее в ваш файл класса:
    using System.Web.Script.Serialization;
Скотт Джонсон
источник
идеально, я даже забыл сделать что-то вроде этого, спасибо
Халил Лираки
Большой! подробное объяснение
чарулатха кришнамурти
41

С первого результата поиска в Google:

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

Класс JavaScriptSerializer

Предоставляет функции сериализации и десериализации для приложений с поддержкой AJAX.

Иерархия Наследования

System.Object

System.Web.Script.Serialization.JavaScriptSerializer

Пространство имен: System.Web.Script.Serialization

Сборка: System.Web.Extensions (в System.Web.Extensions.dll)

Итак, включите System.Web.Extensions.dllв качестве ссылки.

Павел
источник
3
Два года спустя, для совершенно не связанного с этим проекта: это также помогает, если вы правильно пишете его с заглавной буквы>.> (Это не JavascriptSerializer).
Neminem
25

Я использую Visual Studio 2015 и, наконец, наткнулся на этот пост.

Да, чтобы использовать

JavaScriptSerializer json = new JavaScriptSerializer();

Вы должны щелкнуть правой кнопкой мыши по ссылкам и в разделе Сборки -> Выбор платформы

System.Web.Extensions

Затем добавьте в вашу ссылку

using System.Web.Script.Serialization;
Том Стиккель
источник
15

Это как сделать JavaScriptSerializer доступным в вашем приложении, нацеливание .NET 4.0(полное)

using System.Web.Script.Serialization;

Это должно позволить вам создать новый JavaScriptSerializerобъект!

Алекс Хопкинс
источник
Сценарий не существует
KansaiRobot
12
using System.Web.Script.Serialization; 

находится в сборке: System.Web.Extensions (System.Web.Extensions.dll)

Ema.H
источник
10

Вы ориентируетесь на .NET 4 framework или .NET 4 Client Profile?

Если вы нацеливаетесь на последнее, вы не найдете этот класс. Вы также можете пропустить ссылку, вероятно, на расширение DLL.

Кристофер Токов
источник
.NET Framework 4. И у меня уже есть «System.Web.Extensions», включенные в проект
Prisoner ZERO
Это проект, который вы обновили с более ранней версии .net?
Кристофер Уок
У меня проблема с проектом, который я обновил. Похоже, это не решается с помощью оригинальной версии .net (3.5), хотя ...
user1003221
9

Для тех, кто, кажется, следит за ответами выше, но все еще имеет проблему (например, см. Первый комментарий на вопрос автора):

Вы, вероятно, работаете над решением многих проектов. Проект, над которым вы работаете, ссылается на другие проекты, но вы на самом деле изменяете файл из одного из других проектов. Например:

  • Проект A ссылки System.Web.Extensions
  • проект A ссылки проект B

Но если файл, который вы изменяете для использования, System.Web.Script.Serializationнаходится в проекте B, то вам также необходимо добавить ссылку на System.Web.Extensionпроект B.

jltrem
источник
8

Вы включили ссылку на System.Web.Extensions? Если вы нажмете на свою первую ссылку, там написано, в какой сборке он находится.

Davy8
источник
В этом случае, возможно, посмотрите ответ @ Кристофера.
Davy8
5

Вы должны добавить ссылку на проект.

В Сборках есть System.Web.Extensions Добавьте это.

Как только это будет сделано, введите:

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

Это сработало для меня.

riahc3
источник
3

Как вы знаете, я использую Visual Studio 2013 и у меня была такая же проблема, пока я не использовал Свойства проекта, чтобы переключиться на 3.5 Framework и обратно на 4.5. Это по какой-то причине правильно зарегистрировало .dll, и я мог использовать System.Web.Extensions .

введите описание изображения здесь

введите описание изображения здесь

Милан
источник
3

Вы можете использовать другую опцию, которая является Newtonsoft.Json, вы можете установить ее из диспетчера пакетов NuGet.

Инструменты >> Диспетчер пакетов Nuget >> Консоль диспетчера пакетов с помощью команды

Install-Package Newtonsoft.Json

или

с помощью графического интерфейса в разделе Инструменты >> Диспетчер пакетов Nuget >> Управление пакетами NuGet для решения ...

введите описание изображения здесь

Александр Залдостанов
источник
Обратите внимание, что это документированная рекомендация Microsoft . В .Net Core Microsoft больше даже не предлагает JavaScriptSerializer (как и остальную часть System.Web.Extensions).
Брайан