在C#中请求API应选择哪种格式 - JSON还是XML?

4

我在C#中从REST API请求数据。该API以JSON和XML格式提供相同的数据。

我应该选择哪一个呢?在JavaScript中,很明显我会选择哪一个。但是在C#中呢?有没有性能优势可以帮助我在C#中选择其中之一,或者有没有好的实践原因呢?

提前致谢!

6个回答

6

个人建议尝试两种方法,测量性能,比较后选择更快的一种。从应用逻辑角度来看,这并不重要,因为它将操作对象(而不是XML或JSON)。将XML / JSON转换为对象应该抽象到存储库中,如果您觉得最初选择的实现速度慢或无法正常工作,您可以在眨眼之间替换为另一个实现。


当然,如果我在这里没有运气的话,那就是我的下一步行动了 ;) - Martin Buberl
我现在要进行一些性能测试。如果从设计角度来看真的没有关系,那我就选择最快的方案。谢谢! - Martin Buberl
@MartinBuberl - 你有进行过性能测试吗?可以公布一下测试结果以及使用的解析器吗? - hofnarwillie
@hofnarwillie 我最终选择了JSON,因为我个人更喜欢它,并且在我的情况下格式并不是那么重要,但如果你想追求速度,尝试使用不同的.NET序列化程序可能是值得的:http://www.servicestack.net/benchmarks/ - Martin Buberl

1

C#可以从JSON或XML反序列化对象。

一般来说,XML比JSON更冗长。

如果你获取的数据集很小,那么它们之间的差异不大,但如果你有一个较大的数据集,那么不那么冗长的JSON可能会在网络传输中更快地传输。

我会取样本并进行比较。


1
个人而言,我认为C#中的XML序列化框架比JSON支持更成熟、功能更丰富(实际上有两个不同的.NET框架来支持JSON)。但是JSON更加简洁,所以这取决于你负载的特性——是否会有很大的流量等等。

1

在某些时候,可能是在调试期间,您可能想要检查或显示原始的API响应。在这种情况下,如果您选择了更容易阅读的格式,那么您会更好地完成任务。


1

你应该同时测量两者,以确定你的情况的性能特征。

在我的使用中,我开始使用JSON,因为它具有明显的“跨平台”优势,但在Silverlight/C#中处理较大数据集时被迫改用XML,因为出现了严重的减速(这在我的模块中报告为错误,其中一切都会冻结数秒钟 - 减速被追踪到其使用的大型数据集的JSON反序列化)。转换为XML导致下载量增加(已计划添加gzip压缩以抵消此问题),但性能增加了一个数量级,即使添加了gzip解压缩。


你的情况是一个很好的观点!就像很多其他事情一样,我想这取决于情况。只是希望有一些基准测试 ;) - Martin Buberl
服务器端的XML处理选项比浏览器端更多(性能、成熟度等)... - vtd-xml-author

0

JSON和XML都有许多语言的库,因此解析/生成的易用性在这里并不是非常相关。

尽管JSON似乎更小(特别是如果您不使用XML属性而是采用纯元素方法),但在压缩后两者几乎相同

如果您真的追求速度,我建议您检查一下Google的协议缓冲区。如果不是,那么这真的只是品味问题,除非您计划对该API进行AJAX调用,在这种情况下,毫无疑问我会选择JSON。


我喜欢那个协议缓冲链接。我一定会去看看它!即使它不是这个项目的选择。谢谢! - Martin Buberl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接