在.NET 4.0中找不到JavaScriptSerializer

307
我似乎无法在 Visual Studio 2010 中找到 JavaScriptSerializer 对象或 System.Web.Script.Serialization 命名空间。 我需要将某些内容序列化为 JSON,我应该使用什么?
是的,我已经在项目中包含了 System.Web.Extensions(在 System.Web.Extensions.dll 中)。 这就是为什么我感到震惊的原因?
我知道 System.Web.Extensions 在 3.5 中被标记为 obsolete

5
我有同样的问题,不得不说那些答案都很无用。我正在针对“ .NET Framework 4”,而不是“.NET 4 Client Profile”。 我已经引用了 System.Web.Extensions 程序集。但是当我尝试使用 System.Web.Script.Serialization 命名空间时,VS 2010告诉我:“名称空间'System.Web'中不存在脚本类型或命名空间”。有人找到了真正的解决方案吗?我很困惑! - twakjaco
相关帖子请点击此处 - RBT
12个回答

543

检查您是否包含了 .net 4 版本的 System.Web.Extensions - 还有一个 3.5 版本,但我认为那个版本不起作用。

这些步骤适用于我:

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

在 VB.NET 中不要忘记使用 "new" 和 ( ),例如:Dim JsonConvert As New JavaScriptSerializer()。 - zokaee hamid

140
  1. 右键点击References并选择Add Reference,然后从Assemblies->Framework中选择System.Web.Extensions
  2. 现在您应该能够将以下内容添加到类文件中:
    using System.Web.Script.Serialization;

太完美了,我甚至都忘记了这样做,谢谢你。 - Khalil Liraqui
太好了!详细的解释。 - charulatha krishnamoorthy

43

从谷歌搜索结果的第一条中获得:

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 (in System.Web.Extensions.dll)

因此,请将 System.Web.Extensions.dll 作为引用包含。


3
两年后,在一个完全不相关的项目中:如果您正确地将其大写(而不是JavascriptSerializer),也会有所帮助。 - neminem

30

我正在使用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对象!


2
脚本不存在。 - KansaiRobot

13
using System.Web.Script.Serialization; 

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


9
对于那些似乎已经按照上面的答案进行操作但仍然遇到问题的人(例如,参见海报问题的第一条评论):
你可能正在处理一个包含多个项目的解决方案。你所在的项目引用了其他项目,但实际上你要修改的文件属于其中一个其他项目。例如:
- 项目A引用 System.Web.Extensions - 项目A引用项目B
但是,如果你要修改的文件属于项目B,且要使用 System.Web.Script.Serialization,则需要在项目B中也添加对 System.Web.Extension 的引用。

9

您是否针对.NET 4框架或.NET 4客户端配置进行目标定位?

如果您针对的是后者,则您将找不到该类。您可能还缺少一个引用,很可能是一个扩展dll。


.NET Framework 4。我已经在项目中包含了'System.Web.Extensions'。 - Prisoner ZERO
这是一个你从较早版本的 .net 升级过来的项目吗? - Christopher Currens
我遇到了一个升级后的项目问题。尝试使用原始的 .net 版本(3.5),但似乎问题并未解决... - user1003221

8
您是否已经包含了对 System.Web.Extensions 的引用?如果您点击第一个链接,它会告诉您它在哪个程序集中。

在那种情况下,也许可以看看 @Christopher 的答案。 - Davy8

5

您需要将引用添加到项目中。

在程序集中,有一个名为System.Web.Extensions的Add方法。

完成后,请输入以下内容:

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

那对我有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接