我想了解 OdataMediaTypeFormatterJsonMediaTypeFormatter 之间的区别。我尝试在网上搜索但没有得到答案。在我的产品中,我们最近发现在我们假设我们正在使用 JsonMediaTypeFormatter 时正在使用 OdataMediaTypeFormatter。我们的客户使用 json.net 来序列化他们的对象,所以我想切换到使用 JsonMediaTypeFormatter 但想知道此切换会发生什么变化。

我知道两者之间的一个区别 - 一个关于反序列化“long”数据类型。 odata 的 json 需要引用长值,而 json.net 不需要。如本主题中所述 - WinJS OData JSON

关于此的任何指示都会有所帮助。非常感谢!

请您参考如下方法:

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 框架的 native 部分。它们都派生自 System.Net.Http.Formatting.MediaTypeFormatter 但它们有自己的序列化和反序列化它们分别针对的不同负载类型的实现。

了解什么是OData JSON,可以引用这个链接OData JSON Format Version 4.0 .从中您可以看到 ODataMediaTypeFormatter 还处理许多 OData 特定的 JSON 元素和属性,而 JsonMediaTypeFormatter 对此一无所知。

因此,对于您的场景,由于您正在使用此通用 JSON 序列化程序:JSON.NET 来序列化对象,因此只要您的客户端不是,切换到使用 JsonMediaTypeFormatter 应该没有任何负面影响与 OData 服务对话。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!