ASP.NET WebAPI的哪一部分负责解析JObject的动态

时间:2015-01-20 13:02:04

标签: c# asp.net asp.net-web-api json.net

我有一个ApiController,方法如下:

public void Post(dynamic data)
{
    Type actualType = data.GetType(); // returns JObject
}

当我进行AJAX调用,将JSON数据发送到控制器时,'data'参数的实际类型是JObject(来自Newtonsoft.Json库)。 WebAPI的哪个部分负责将此请求中的数据绑定到JObject?它是模型粘合剂吗?如果是这样,哪一个? (有几个内置的,例如'MutableObjectModelBinder','TypeMatchModelBinder'等。)

1 个答案:

答案 0 :(得分:5)

JsonMediaTypeFormatter。 ASP.NET Web API默认JSON Formatter是JSON.NET。这就是您的动态对象转换为JObject的原因。您可以将默认格式化程序切换为DataContractJsonSerializer。

查看this article

  

JSON媒体类型格式化程序

     

JSON格式由JsonMediaTypeFormatter类提供。通过   默认情况下,JsonMediaTypeFormatter使用Json.NET库来执行   序列化。 Json.NET是第三方开源项目。

     

如果您愿意,可以将JsonMediaTypeFormatter类配置为   使用DataContractJsonSerializer而不是Json.NET。为此,请设置   UseDataContractJsonSerializer属性为true:

     

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;   json.UseDataContractJsonSerializer = true;

您可以从WebApiConfig

更改JSON格式化程序配置