Mac*_*iak 1 c# asp.net json.net asp.net-web-api
我有一个ApiController与以下方法:
public void Post(dynamic data)
{
Type actualType = data.GetType(); // returns JObject
}
Run Code Online (Sandbox Code Playgroud)
当我进行AJAX调用,将JSON数据发送到控制器时,'data'参数的实际类型是JObject(来自Newtonsoft.Json库).WebAPI的哪个部分负责将此请求中的数据绑定到JObject?它是模型粘合剂吗?如果是这样,哪一个?(有几个内置的,例如'MutableObjectModelBinder','TypeMatchModelBinder'等)
是的JsonMediaTypeFormatter.ASP.NET Web API默认JSON Formatter是JSON.NET.这就是您的动态对象转换为JObject的原因.您可以将默认格式化程序切换为DataContractJsonSerializer.
看看这篇文章.
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格式化程序配置
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |