我有一个ApiController,方法如下:
public void Post(dynamic data)
{
Type actualType = data.GetType(); // returns JObject
}
当我进行AJAX调用,将JSON数据发送到控制器时,'data'参数的实际类型是JObject(来自Newtonsoft.Json库)。 WebAPI的哪个部分负责将此请求中的数据绑定到JObject?它是模型粘合剂吗?如果是这样,哪一个? (有几个内置的,例如'MutableObjectModelBinder','TypeMatchModelBinder'等。)
答案 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格式化程序配置