【问题标题】:How to convert object to JSON without JSON.NET library?如何在没有 JSON.NET 库的情况下将对象转换为 JSON?
【发布时间】:2013-03-28 23:36:14
【问题描述】:

我想保存这个对象:

Student s = new Student();

到 Json 文件。但是 Visual Studio 2012 找不到这些命名空间:

System.Web.Script;
System.Json;
System.Runtime.Serialization.Json;

有什么想法吗?

【问题讨论】:

  • 是的,我发现你只能通过安装另一个包然后删除它来安装 System.Json。 (不记得它是哪个包。)我的印象是 System.Json 并不真正受支持。

标签: c# json serialization


【解决方案1】:

如果你想将类序列化为 Json,你也可以试试这个:

如果您还没有安装 JSON.NET。

确保包含using Newtonsoft.Json;

你可以试试这个代码:

Student s = new Student();
string json = JsonConvert.SerializeObject(s);

抱歉我的英语不好。

【讨论】:

  • 这个答案完全不是 OP 想要的,它会创建点击诱饵欺骗搜索结果。
【解决方案2】:

第 1 步:谷歌“System.Runtime.Serialization.Json 命名空间”并找到此页面:

System.Runtime.Serialization.Json Namespace

第二步:点击你感兴趣的课程(比如JsonReaderWriterFactory Class)

第 3 步:阅读说明该类所在的程序集的部分:

程序集:System.Runtime.Serialization(在 System.Runtime.Serialization.dll)

第 4 步:将该 DLL 添加为对您的项目的引用。见:How to: Add or Remove References By Using the Add Reference Dialog Box

第 5 步:根据需要重复第 1 - 4 步。

【讨论】:

  • 谢谢,这帮助我在 .NET 3.5 中准确找到了这个命名空间。在这个版本中,他们把它放在System.ServiceModel.Web.dll!
【解决方案3】:

确保为您的项目添加适当的引用。例如,要使用datacontractjsonserializer 类,您需要在项目中添加对System.Runtime.Serialization 的引用。

如果您使用的是 Visual Studio,请阅读 How to: Add or Remove References in Visual Studio。

然后您可以将其用于:

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Student));
ser.WriteObject(outputStream, student);

当然还有很多其他方法可以做到这一点,我不会详细介绍每一种(我相信你已经找到了一些例子,因为你列出了这些命名空间)。

提示:如果您想使用 .NET 类,但不确定需要向项目添加什么引用才能使用它,请打开该类的 MSDN 页面并查找如下文本:

程序集: System.Runtime.Serialization(在 System.Runtime.Serialization.dll 中)

这是您需要添加到项目中的程序集引用。

【讨论】:

  • 你能给我更多关于如何添加参考的信息吗?
  • @gkiko 你在用 Visual Studio 吗?
  • Visual Studio 2012 桌面
【解决方案4】:

其他答案是正确的,说您需要添加对适当程序集的引用。作为管理个人项目引用的一种简单方法,我推荐 NuGet,它是 Visual Studio 的包管理器。值得庆幸的是,NuGet 附带 Visual Studio 2012,因此您只需右键单击该项目,单击“管理 NuGet 包”,然后搜索 Json.NET。我发现的第一篇关于在 Visual Studio 2012 中使用 NuGet 的博文是 here,它似乎提供了一组很好的说明,并附有屏幕截图。

【讨论】:

  • 开发人员的愚蠢...我真的希望 OP 在打开自动驾驶仪并让一些工具为他做这件事之前了解这一切。
  • 我对 Nuget 还没有决定。我经常将其视为另一组参考资料的混乱,并且可以在我的工作环境中简单地做到这一点,甚至很高兴 - 尽管我一直在尝试喝koolaid并尝试在个人机器上使用它,也许一分钱会掉,我会“得到它”。
  • 我非常关心 NuGet。陪我一会儿……看,我是部署专家。 (是的,你想笑就笑吧,我以前在这里听到过尖刻的“部署专家?哇哈哈”cmets。)开发人员经常来找我而不知道他们的依赖关系是什么。了解依赖关系是提出需求的第一步。 NuGet 自动设置开发环境和构建环境,但对部署没有任何作用。我的其他担忧是它有点像 CM 的噩梦。否则我知道他们想做什么。
  • @ChristopherPainter 也许吧。与其看到一个新程序员说“这个 C# 东西很难,我会​​用 PHP 编写所有东西”,我宁愿让他/她使用一段时间的包管理器,并在寻找一个特定版本的库,或者使用包管理器中不可用的库,或者将项目拆分为单独的程序集,或者在编写任何 C++代码或Linux代码时大学课程。
  • 否则我知道他们想做什么。他们试图对所有习惯了其他开源堆栈工作方式的新人保持冷静和性感。
【解决方案5】:

您可能需要添加对项目的引用:

  • System.Runtime.Serialization.Json 在 System.Runtime.Serialization 中
  • System.Web.Script 位于 System.Web.Extensions 中
  • System.Json 仅适用于 Silverlight

【讨论】:

    猜你喜欢
    • 2012-03-23
    • 2017-05-20
    • 1970-01-01
    • 2018-11-22
    • 2017-04-05
    • 2019-03-01
    • 1970-01-01
    • 2012-06-01
    相关资源
    最近更新 更多