【问题标题】:WPF Reading / writing JSON vs XMLWPF 读/写 JSON vs XML
【发布时间】:2015-06-03 10:04:43
【问题描述】:

我正在寻找一种从文件中读取和写入数据的解决方案。该数据是由文件路径、名称和系统上的视频播放应用程序兼容的视频格式列表组成的列表。 XML 数据结构如下所示。

<player>
    <name>WMP</name>
    <path>C:\Program Files (x86)\Windows Media Player\wmplayer.exe</path>
    <extensionList>
        <string>AVI</string>
        <string>WMP</string>
    </extensionList>
</player>

我之前使用过 XMLSerializer 来序列化播放器类的列表,这些播放器类运行得非常好,在此之前我使用过 SQL。我最近听说过 JSON,并且想在存储数据方面扩大我的选择范围。有没有人对哪种格式更适合我的 WPF 应用程序有任何建议,或者是否有任何更好的数据访问方法适合我的需求。

【问题讨论】:

  • JSON 通常比 XML 小得多——但有时也没有那么可读。如果用户永远不会阅读您的 XML 文件,那么我会使用 JSON 来查看文件大小。您可能想看看JavaScriptSerializer,但我强烈建议您改用Json.NET by Newtonsoft。如果您需要了解数据类型以及文件中没有的内容,那么 XML 将是您的最佳选择。
  • @MightyLampshade 我认为我将使用 XML 纯粹是为了它的可读性,因为大小真的不是问题。

标签: c# json xml wpf data-structures


【解决方案1】:

XML 的理论优势在于您可以使用 xpath 进行某种查询,并有可能处理更大的数据集。

特别是在 WPF 中,您有 XmlDataProvider,您可以在其中将 UI 控件直接数据绑定到 xml 节点。

这是理论。在现实世界中,您几乎肯定会将您的 xml 反序列化为数据传输对象,因此您可以利用强类型类、编译时检查、OOP 等。在这种情况下,上述 xml 的优势是无关紧要的。

另一方面,JSON 文件略小,JSON 序列化程序略快,并且可能更好的人类可读性。

文件大小在 Web 场景中发挥作用,您需要在客户端和服务器之间传输数据(JSON 格式来自 javascript 并非巧合),但不是您的情况。除非您处理大型数据集,否则您可能不必关心序列化性能。

在您的情况下,JSON 和 XML 都不是更好或更差。两者都能很好地完成工作,你不能做出错误的决定。

恕我直言,如果您以前使用过 XML,那么现在就使用 JSON,这样您将同时拥有这两种方法的经验,并且您会学到一些新东西。最后,只需几行代码,您可以在需要时轻松将序列化逻辑更改为其他内容。

【讨论】:

    【解决方案2】:

    据我了解您的问题,您只想在应用程序中存储和使用数据,不想与其他应用程序交换数据。

    JSON 作为一种格式具有非常低的开销,从而导致文件更小 - 这就是它经常用于移动场景的原因。此外,正如其名称“JavaScript Object Notation”所表达的那样,它可以用 JavaScript 很好地处理,使其成为 Web 应用程序的不错选择。

    由于它在过去几年中被广泛使用,因此有很好的 .NET 库可以将 .NET POCO 序列化为 JSON,例如JSON.NET

    就您而言,这或多或少取决于您的个人选择。根据您描述的要求,我认为没有充分的理由使用 JSON 代替 XML 序列化。

    【讨论】:

      【解决方案3】:

      正如其他人回答的那样,如果您需要更小的文件(例如在移动/网络应用程序中)JSON 是可行的方法,因为文件更小。

      另一方面,如果文件大小不是问题,那么我会使用 XML,因为如果文件是易失性的并且会大量更改它们的形式(在这种情况下,您将做的不仅仅是视频播放应用程序)它将是很难序列化所有这些 xml 文件。这里是 LINQ to XML。即使您不在此应用程序中使用它,您也应该阅读它。 LINQ 在从 LINQ 到 SQL 到 LINQ 到 XML 的所有形式中都非常有用。

      herehere读取

      【讨论】:

      • 感谢 Linq 链接...我有一些使用它的经验,并且绝对了解它对我的用途。
      【解决方案4】:

      JSON 和 XML 做同样的事情:将数据表示为文本。 JSON 比 XML 不那么冗长,因此您的文件会更轻。 解析 JSON 比解析 XML 更快。

      你可以检查this lib来解析JSON。

      【讨论】:

      • 感谢 NuGet 的链接,正在寻找 Json.Net 的免费替代品。
      猜你喜欢
      • 2012-06-21
      • 2020-03-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-11
      • 2018-06-06
      相关资源
      最近更新 更多