C# 非Javascript应用程序中的JSON

C# 非Javascript应用程序中的JSON,c#,.net,json,architecture,C#,.net,Json,Architecture,我希望通过网络持久化和检索大量键值对类型的数据。对于我来说,针对XML使用JSON是否合适 JSON是否用于非Javascript应用程序 在这方面使用JSON比使用好的旧XML有什么优势吗?JSON适合这种用途,并且比XML更紧凑。(我们在非Javascript应用程序中广泛使用它,并允许REST web服务的使用者指定是否需要XML、JSON甚至XHTML表示形式的数据。) 更新:当带宽是一个问题时,通过GZIP编码/解码XML或JSON,您可能会得到50-70%的压缩。请参阅。我发现JSO

我希望通过网络持久化和检索大量键值对类型的数据。对于我来说,针对XML使用JSON是否合适

JSON是否用于非Javascript应用程序


在这方面使用JSON比使用好的旧XML有什么优势吗?

JSON适合这种用途,并且比XML更紧凑。(我们在非Javascript应用程序中广泛使用它,并允许REST web服务的使用者指定是否需要XML、JSON甚至XHTML表示形式的数据。)


更新:当带宽是一个问题时,通过GZIP编码/解码XML或JSON,您可能会得到50-70%的压缩。请参阅。

我发现JSON没有XML那么详细,开发中有一个非常好的数据库,名为,它可以让您直接存储/搜索JSON文档。

当然,事实上JSON比XML好得多,原因如下:

  • 用于读/写的API要简单得多。
    • 检索值就像从字典中读取键一样简单
  • 它不那么冗长,更容易被普通人阅读。
    • 这也意味着巨大的数据需要更少的空间和时间来解析

由于web应用服务器广泛使用JSON与浏览器中的Javascript(AJAX)进行通信,因此对于您可以想象的每种语言,都有许多JSON编码/解码库。例如,Python有6种不同的实现可供选择


对“大量”数据使用JSON的主要优点是,解码数据的解析时间比解析XML要少很多。现在,您的键值对可能足够简单,解析时间不会产生任何影响,但是如果这些值中包含任何类型的复合对象,那么JSON将更快

IMO,如果您想要持久化,并且希望能够升级应用程序(事实上总是这样),那么您应该手动创建序列化代码,并创建一个文档化的文件格式。否则,您可能会遇到大麻烦。

关于JSON的可用性,我同意其他人的看法,但有一点需要注意:JSON不允许您提供有关数据的附加信息。如果您只想使用名称-值对,其中所有值都是字符串,那么JSON就可以了

好吧,可能有人刚刚投票否决了我,因为字符串、数字、布尔值和数组之间存在差异。但我的回答是:你得到的是什么样的数字?32位整数还是千位浮点


相比之下,XML允许您在属性中存储元数据。例如,XML模式定义的
xsi:type
属性。当然,双方仍然必须就属性的含义达成一致,但在很多情况下元数据很重要。

这是否最适合您取决于您的优先级,例如速度或灵活性

我把一个C#应用程序改为使用JSON,因为速度对我来说是最重要的问题。我将自己在服务器上序列化数据,并删除任何多余的内容,例如每个属性的名称,以加快传输速度。我发现,与使用Web服务或返回XML相比,使用JSON向服务器发送请求、获取响应和处理过程要快得多

要从C#反序列化,您有几个选项

因此,在您决定进行更改之前,您应该进行一些单元测试,然后通过对同一个客户机->服务器->客户机调用大约100次来获得一些数字,以获得更好的结果

您应该将所有测试放在同一个测试类中,以便测试可以直接运行,以减少服务器负载出现问题的可能性

如果您需要以其他方式(例如使用XML LINQ)灵活地进行排序或处理,那么您可以将信息转换为列表并使用LINQ,但是,同样,您可能需要添加测试以查看这对应用程序的影响


基本上,我相信如果您有时间,在进行任何体系结构更改之前,首先测试,然后根据数字决定进行更改是否有意义。

它比XML更紧凑,在某些情况下解析速度更快。所以我通常更喜欢它

另一方面,XML通过提供解决方案(f.e.编码)解决了一些规范问题

然而,我可以在我的规范中写下“您必须只使用UTF-8”,然后编码规范问题就解决了

基本上,如果您需要简单的键/值或嵌套的键/值/列表结构,并且想要解决转义和定界的常见问题,并且有许多可用的解析器,那么可以使用JSON


我至少编写了一个使用JSON的协议,尽管在Microsoft.NET上,但它的用户从未抱怨过使用JSON而不是XML:)

一般来说,人们应该使用JSON和XML包进行读取(解析)和写入。较新的编程语言具有内置支持(请参阅@Michael Dillon)。我从来没有打算暗示应该编写自己的json解析器,尽管这不是一个很坏的主意。json并不总是比XML好,这取决于您需要它做什么。如果我想对文件进行更多的处理,XML会更好,但是如果我完成了处理并准备显示它,那么JSON就很棒了。XML和JSON不是一回事,不要再像对待它们那样对待它们了。JSON重量很轻,非常适合组织数据,但它没有任何内置标准来支持它,这在许多情况下非常有用。在许多情况下有用吗?不,它只在广泛使用xml的传统应用程序中有用。您也可以将元数据存储在JSON中。正如有一个XML模式一样,也有一个XML模式。另外,JavaScript中的数字是64位有符号的两倍。@Elijah-(1)模式(XML或JSON)是数据外部的,因此您不需要提供