我想了解 OdataMediaTypeFormatter 和 JsonMediaTypeFormatter 之间的区别。我尝试在网上搜索但没有得到答案。在我的产品中,我们最近发现在我们假设使用 JsonMediaTypeFormatter 时正在使用 OdataMediaTypeFormatter 。我们的客户使用json.net来序列化他们的对象,所以我想切换到使用 JsonMediaTypeFormatter ,但想知道这个开关会改变什么。
我知道两者之间存在一个区别 - 一个是关于反序列化' long'数据类型。 odata的json需要引用长值,而json.net不会。正如这篇帖子中提到的那样 - WinJS OData JSON
关于此的任何指示都会有所帮助。非常感谢!
答案 0 :(得分:1)
ODataMediaTypeFormatter
位于命名空间System.Web.Http.OData.Formatter
(也就是OData V1-3的ASP.NET Web API)和System.Web.OData.Formatter
(也就是OData V4的ASP.NET Web API)中)。因此它是OData有效载荷类型的媒体类型格式化器(即OData V3的Atom和JSON light和JSON verbose以及OData V4的OData JSON)。
另一方面,JsonMediaTypeFormatter
属于System.Net.Http.Formatting
。因此它是用于JSON有效负载处理的.NET框架的本机部分。它们都来自System.Net.Http.Formatting.MediaTypeFormatter
,但它们有自己的实现,分别对它们所针对的不同负载类型进行序列化和反序列化。
对于不活跃和什么是OData JSON,您可以参考此链接OData JSON Format Version 4.0。从中你可以看到ODataMediaTypeFormatter
还处理了很多OData特定的JSON元素和属性,JsonMediaTypeFormatter
不知道。
因此,对于您的场景,由于您正在使用此通用JSON序列化程序:JSON.NET来序列化对象,只要您的客户端不说话,就不应该切换到使用JsonMediaTypeFormatter
。到OData服务。