在.Net 4.0中找不到JavaScriptSerializer


297

我似乎找不到 JavaScriptSerializerSystem.Web.Script.Serialization在Visual Studio 2010中对象或名称空间。我需要将某些内容序列化为JSON,我应该使用什么?

是的,我已经将 System.Web.Extensions在项目中(在System.Web.Extensions.dll中)。这就是为什么我感到震惊?

  • 我确实知道在3.5中System.Web.Extensions被标记为过时

5
我有同样的问题,我得说答案是毫无用处的。我的目标是“ .NET Framework 4”,而不是 “ .NET 4 Client Profile”。我已经引用了System.Web.Extensions程序集。但是,当我尝试使用System.Web.Script.Serialization命名空间时,VS 2010告诉我“命名空间System.Web中不存在类型或命名空间脚本”。有没有人找到真正的解决方案?我很沮丧!
twakjaco 2011年

相关帖子在这里
RBT

Answers:


523

检查是否包含.net 4版本System.Web.Extensions-也有3.5版本,但我认为这没有用。

这些步骤对我有用:

  1. 创建一个新的控制台应用程序
  2. 将目标更改为.net 4而不是客户端配置文件
  3. 添加对System.Web.Extensions(4.0)的引用
  4. JavaScriptSerializer现在可以在Program.cs中访问:-)

在vb.net中不要忘记“新”和(),如:Dim JsonConvert as New JavaScriptSerializer()
zokaee hamid


41

从Google的第一个搜索结果中:

http://msdn.microsoft.com/zh-CN/library/system.web.script.serialization.javascriptserializer.aspx

JavaScriptSerializer类别

为启用AJAX的应用程序提供序列化和反序列化功能。

继承层次

系统对象

System.Web.Script.Serialization.JavaScriptSerializer

命名空间:System.Web.Script.Serialization

程序集:System.Web.Extensions(在System.Web.Extensions.dll中)

因此,包括System.Web.Extensions.dll作为参考。


3
两年后,在一个完全无关的项目上:如果正确将其大写>。>(不是JavascriptSerializer),它也会有所帮助。
neminem 2015年

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)


10

您是针对.NET 4框架还是.NET 4客户端配置文件?

如果您要针对后者,则不会找到该类别。您可能还会缺少对扩展dll的引用。


.NET Framework4。我已经在项目中包含“ System.Web.Extensions”
Prisoner ZERO

您是从早期版本的.net升级的项目吗?
克里斯托弗·柯伦斯

我升级的项目遇到这个问题。通过使用原始.net版本(3.5),似乎无法解决该问题……
user1003221 2012年

9

对于那些似乎遵循上述答案但仍然存在问题的人(例如,请参见发布者问题的第一条评论):

您可能正在使用许多项目的解决方案。您似乎正在使用的项目引用了其他项目,但实际上您正在修改其他项目之一中的文件。例如:

  • 项目A参考 System.Web.Extensions
  • 项目A参考项目B

但是,如果您要修改使用的文件System.Web.Script.Serialization在项目B中,则也需要System.Web.Extension在项目B中添加对它的引用。


8

您是否提及了System.Web.Extensions?如果单击第一个链接,则会显示它所在的程序集。


在这种情况下,请查看@Christopher的答案。
2011年

5

您必须将引用添加到项目中。

在程序集中,有一个System.Web.Extensions添加它。

完成后放:

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

那对我有用。


3

大家知道,我使用的是Visual Studio 2013,在使用项目属性切换到3.5框架和回到4.5之前一直遇到相同的问题。由于某种原因,这会正确注册.dll,我可以使用System.Web.Extensions

在此处输入图片说明

在此处输入图片说明


3

您可以使用另一个选项Newtonsoft.Json,也可以从NuGet软件包管理器中安装它。

通过发出命令,工具>> Nuget软件包管理器>>软件包管理器控制台

Install-Package Newtonsoft.Json

要么

通过在工具>> Nuget软件包管理器>>管理解决方案的NuGet软件包中使用GUI,...

在此处输入图片说明


请注意,这是Microsoft 记录在案的建议。在.Net Core上,Microsoft甚至不再提供JavaScriptSerializer(以及System.Web.Extensions的其余部分)。
布莱恩(Brian)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.