我想了解OdataMediaTypeFormatter和JsonMediaTypeFormatter之间的区别。我试着在网上搜索,但没有得到这个问题的答案。在我的产品中,我们最近发现OdataMediaTypeFormatter正在被使用,而我们假设我们正在使用JsonMediaTypeFormatter。我们的客户使用json.net来序列化他们的对象,所以我想切换到使用 JsonMediaTypeFormatter,但想知道这个开关会改变什么。
我知道两者之间的一个区别——一个是关于"long"数据类型的反序列化。Odata的json需要长值引号,而json.net不需要。正如在这个线程中提到的- WinJS OData JSON
这方面的任何提示都会有所帮助。谢谢!
ODataMediaTypeFormatter
位于命名空间System.Web.Http.OData.Formatter
(又名ASP. js)中。. NET Web API for OData V1-3)和System.Web.OData.Formatter
(又名ASP。. NET Web API for OData V4)。因此,它是OData有效负载类型的媒体类型格式化器(即OData V3的Atom和JSON轻量级和JSON详细,OData V4的OData JSON)。
而JsonMediaTypeFormatter
则属于System.Net.Http.Formatting
。因此,它是。net框架中用于JSON有效负载处理的原生部分。它们都派生自System.Net.Http.Formatting.MediaTypeFormatter
,但是它们各自有自己的序列化和反序列化不同有效负载类型的实现。
要了解什么是OData JSON,你可以参考这个链接OData JSON格式版本4.0。从中可以看到,ODataMediaTypeFormatter
还处理了许多特定于OData的JSON元素和属性,这些是JsonMediaTypeFormatter
所不知道的。
因此,对于您的场景,由于您正在使用这个通用JSON序列化器:JSON。. NET来序列化对象,只要您的客户端不与OData服务通信,切换到使用JsonMediaTypeFormatter
应该没有任何负面影响。