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

时间:2011-01-26 18:28:43

标签: c# xml json api rest

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

我应该去哪一个?它是clear我将在JavaScript中选择哪一个。 但C#中的内容是什么?在C#或任何良好做法原因下,是否有任何性能优势可帮助我选择其中一种?

提前致谢!

6 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

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

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

如果你要获得一个小数据集,那么它就没有多大区别,但是如果你有一个更大的数据集,那么较不详细的JSON可能会更快地通过网络传输。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

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

此外,虽然JSON似乎更小,(特别是如果你不使用XML属性但是纯元素方法)gzip都是almost the same

如果你真的速度快,我建议你检查一下Google protocol buffers。如果不是,它真的是一个品味问题,除非你打算对该API进行AJAX调用,在这种情况下,我毫无疑问会选择JSON。