.NET 中的 LINQ to JSON
Posted
技术标签:
【中文标题】.NET 中的 LINQ to JSON【英文标题】:LINQ to JSON in .NET 【发布时间】:2011-06-28 09:47:44 【问题描述】:有JSON 文件这样的东西吗?也就是*.json?
可以在没有任何 javascript 内容的情况下在 C# 代码中使用 JSON,在某种程度上作为 XML 的替代品吗?
对于 C# 有没有官方的 LINQ 到 JSON 的东西?
我确实为我的最后一个问题找到了一个网站,但它把我带到了一个下载 JSON.NET 的页面,并且该页面似乎没有提到任何关于 LINQ 的内容。
【问题讨论】:
【参考方案1】:是的,有一个 *.json 文件。 MIME 类型是application/json
(source)。 JSON 是一种基于文本的格式,因此您可以假设将 JSON 格式的数据存储在具有您选择的任何扩展名的文本文件中。
JSON 绝对可以独立于 JavaScript 使用。在某些情况下,它可能比 XML 更适合表示您的数据。 JSON.org 在JSON and XML 之间有一个很好的比较页面。
JSON.org 列出了几个用于 C# 的 JSON 库(例如,您已经发现的 JSON.NET),并且这些库使用的大多数(如果不是全部)集合应该支持 LINQ。 JSON.NET 确实提供了对它的支持。请参阅here 或here。
【讨论】:
我认为你是个骗子——百吉饼,而不是甜甜圈! @ClayShannon 百吉饼是否也有同样闪亮的美味釉料? 是的,当涂上打好的蛋黄时——每一个值得他的 Lachs 的百吉饼都知道这一点。【参考方案2】:在 .NET 中使用 JSON 时,每个人都倾向于坚持使用 JavaScriptSerializer(来自 System.Web.Extensions 库)。方便的部分是创建自定义JavaScriptConverter 的能力,它将采用自定义对象并按照您选择的方式序列化它们。同样,您可以制作反序列化方法以自定义 JSON 格式接收。
虽然这当然取决于您的应用程序。鉴于它是一个Windows Forms 应用程序,有什么特别的原因让您选择 JSON 而非本地存储信息或仅使用 XML 格式?如果您的应用程序与网页通信,JavaScriptSerializer 可能是最好的选择,但如果您使用它来存储/检索设置,我会使用 XML。而且,如果需要将您的应用程序与基于 Web 的应用程序同步,只需在时间准备好时序列化为 JSON。
【讨论】:
感谢您的建议,我只是选择 JSON 来学习一些新东西,我真的不喜欢 XML。我不知道为什么,只是有一些我不喜欢的东西,但我不能指望它。 Atm,我正在使用 XML 来存储配置信息、设置和其他用户首选项。 @Lucifer:您会发现 XML 比 JSON 更灵活。 XML 为其序列化程序提供了更多的装饰属性,并使存储/检索信息几乎无缝。还可以处理升级配置文件(添加上次保存中可能不存在的新属性)。但归根结底,各有各的。【参考方案3】:您可以将 JSON 文件反序列化为 C# 对象。之后,您可以使用 LINQ 查询这些对象。
【讨论】:
以上是关于.NET 中的 LINQ to JSON的主要内容,如果未能解决你的问题,请参考以下文章
使用 Newtonsoft 将 JSON 反序列化为 .NET 对象(或者可能是 LINQ to JSON?)
使用带有 LINQ 的 JSON.NET 计算我的 JSON 文件中的子项数