【问题标题】:Cannot find JavaScriptSerializer in .Net 4.0在 .Net 4.0 中找不到 JavaScriptSerializer
【发布时间】:2011-10-23 11:15:44
【问题描述】:

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

是的,我已经在项目中包含了System.Web.Extensions(在 System.Web.Extensions.dll 中)。这就是我震惊的原因?

  • 我知道 System.Web.Extensions 在 3.5 中被标记为 obsolete

【问题讨论】:

  • 我也有同样的问题,我得说答案毫无用处。我的目标是“.NET Framework 4”,not“.NET 4 Client Profile”。我已经引用了 System.Web.Extensions 程序集。但是当我尝试使用 System.Web.Script.Serialization 命名空间时,VS 2010 告诉我“命名空间 System.Web 中不存在类型或命名空间脚本”。有没有人为此找到真正的解决方案?我被难住了!
  • 相关帖子here.

标签: c# visual-studio jsonserializer


【解决方案1】:

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

这些步骤对我有用:

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

【讨论】:

  • 在 vb.net 中不要忘记 "new" 和 (),例如:Dim JsonConvert As New JavaScriptSerializer()
【解决方案2】:
  1. 右键单击References 并执行Add Reference,然后从Assemblies->Framework 中选择System.Web.Extensions
  2. 现在您应该可以将以下内容添加到您的类文件中:
    using System.Web.Script.Serialization;

【讨论】:

  • 完美,我什至忘了做类似的事情,谢谢
  • 太棒了!详细解释
【解决方案3】:

来自谷歌的第一个搜索结果:

http://msdn.microsoft.com/en-us/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 作为参考。

【讨论】:

  • 两年后,在一个完全不相关的项目上:如果你正确地大写它也会有帮助 >.>(它不是 JavascriptSerializer)。
【解决方案4】:

我正在使用 Visual Studio 2015,最后遇到了这篇文章。

是的,以便使用

JavaScriptSerializer json = new JavaScriptSerializer();

您必须右键单击引用并在程序集下 --> 框架选择

System.Web.Extensions

然后添加您的参考资料

using System.Web.Script.Serialization;

【讨论】:

    【解决方案5】:

    这是在您的应用程序中获取 JavaScriptSerializer 的方法,目标为 .NET 4.0(完整)

    using System.Web.Script.Serialization;
    

    这应该允许您创建一个新的JavaScriptSerializer 对象!

    【讨论】:

    • 脚本不存在
    【解决方案6】:
    using System.Web.Script.Serialization; 
    

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

    【讨论】:

      【解决方案7】:

      您的目标是 .NET 4 框架还是 .NET 4 客户端配置文件?

      如果您的目标是后者,您将找不到该类。您也可能缺少参考,可能是扩展 dll。

      【讨论】:

      • .NET Framework 4。我已经在项目中包含了“System.Web.Extensions”
      • 这是您从早期版本的 .net 升级而来的项目吗?
      • 我在升级项目时遇到了这个问题。使用原始 .net 版本(3.5)似乎无法解决它......
      【解决方案8】:

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

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

      • 项目 A 引用 System.Web.Extensions
      • 项目 A 引用项目 B

      但如果您修改为使用System.Web.Script.Serialization 的文件在项目B 中,那么您还需要在项目B 中添加对System.Web.Extension 的引用。

      【讨论】:

        【解决方案9】:

        您是否包含对System.Web.Extensions 的引用?如果您单击第一个链接,它会显示它所在的程序集。

        【讨论】:

        • 在这种情况下,可以查看@Christopher 的答案。
        【解决方案10】:

        您必须添加对项目的引用。

        在 Assemblies 中,有一个 System.Web.Extensions 添加那个。

        完成后放置:

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

        这对我有用。

        【讨论】:

          【解决方案11】:

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

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

          Install-Package Newtonsoft.Json

          通过使用 GUI 在工具 >> Nuget 包管理器 >> 管理 NuGet 包以进行解决方案...

          【讨论】:

          • 请注意,这是 Microsoft 的 documented recommendation。在 .Net Core 上,微软甚至不再提供 JavaScriptSerializer(也不再提供 System.Web.Extensions 的其余部分)。
          【解决方案12】:

          您知道,我使用的是 Visual Studio 2013,并且在使用项目属性切换到 3.5 框架并返回到 4.5 之前遇到了同样的问题。由于某种原因,这正确注册了 .dll,我可以使用 System.Web.Extensions

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-11
            • 2014-08-25
            • 2012-04-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多