WPF读/写JSON与XML

时间:2015-06-03 10:04:44

标签: c# json xml wpf data-structures

我正在寻找从文件读取和写入数据的解决方案。数据是由文件路径,名称和系统上视频回放应用程序的兼容视频格式列表组成的列表。 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应用程序,或者是否有更好的数据访问方法满足我的需求。

4 个答案:

答案 0 :(得分:2)

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

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

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

在您的情况下,这或多或少取决于您的个人选择。根据您描述的要求,我没有看到使用JSON而不是XML序列化的强烈理由。

答案 1 :(得分:1)

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

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

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

另一方面,JSON文件略小,JSON序列化程序稍微快一点,可能更易于人类阅读。

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

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

Imho,如果您以前使用的是XML,请立即使用JSON,这样您就可以获得两种体验,并且您将学到新的东西。最后,它只需几行代码,您可以在需要时轻松地将序列化逻辑更改为其他内容。

答案 2 :(得分:1)

如果你需要你的文件更小(例如在移动/网络应用程序中),其他人会回答JSON是要走的路,因为文件较小。

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

herehere

阅读

答案 3 :(得分:0)

JSON和XML正在做同样的事情:将数据表示为文本。 JSON比XML简洁,因此您的文件会更轻。 解析JSON比解析XML更快。

您可以检查this lib以解析JSON。