我应该选择哪种格式来请求C#中的API – JSON或XML

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

我应该去哪一个? 很清楚我会在JavaScript中选择哪一个。 但在C#中呢? 是否有任何性能优势可以帮助我在C#中选择其中一个或任何良好实践原因?

提前致谢!

就个人而言,我会尝试两者,测量性能,比较并选择更快的一个。 从您的应用程序逻辑角度来看,这应该不重要,因为它将操纵对象(不是XML,也不是JSON)。 XML / JSON到对象的转换应该被抽象到一个存储库中,如果你觉得你最初选择的那个很慢或者它不起作用,你可以在眨眼之间替换另一个实现。您。

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

作为一般规则,XML将比JSON更冗长。

如果您要获得一个小数据集,那么它将没有多大区别,但如果您有一个更大的数据集,那么较简洁的JSON可能会更快地通过网络传输。

我会抽取每个样本并进行比较。

我个人认为C#中的XML序列化框架比JSON支持更加成熟并具有更丰富的function集(实际上有两个不同的.NET框架)。 但JSON更简洁,所以它取决于你的负载的特性 – 它是否会流量大,等等。

在某些时候,可能在调试期间,您可能希望检查或显示原始API响应。 在这种情况下,如果您选择了更容易阅读的格式,那么您会感觉更好。

您应该测量两者以确定您的情况的性能特征。

在我自己的用法中,我开始使用JSON,因为它具有明显的“跨平台”优势,但在Silverlight / C#中的大型数据集出现大幅减速之后被迫使用XML(这是我的一个模块中的一个错误报告会冻结几秒钟 – 减速可以追溯到它使用的大型数据集的JSON反序列化。 切换到XML会导致更大的下载(gzip压缩,已经计划好,此时已经添加了以解决此问题),但即使添加了gzip解压缩,性能也会提高一个数量级。

JSON和XML都有大量的任何语言库,因此解析/生成的简便性在这里并不十分重要。

虽然JSON似乎更小,(特别是如果你不使用XML属性但是纯元素方法)当gzip两者几乎相同时

如果你真的很快,我建议你查看谷歌的协议缓冲区 。 如果不是,那真的是一个品味问题,除非你打算对该API进行AJAX调用,在这种情况下我会毫无疑问地选择JSON。