UPDATE
感谢所有的答案.我正在进行一个新项目,看起来我终于找到了底层:看起来下面的代码实际上应该归咎于:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
Run Code Online (Sandbox Code Playgroud)
别处...
public JsonContent(object obj)
{
var encoded = JsonConvert.SerializeObject(obj, Newtonsoft.Json.Formatting.None, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore } );
_value = JObject.Parse(encoded);
Headers.ContentType = new MediaTypeHeaderValue("application/json");
}
Run Code Online (Sandbox Code Playgroud)
假设它是WebAPI,我忽略了看似无害的JsonContent但没有.
这在任何地方都可以使用......我能说第一个,wtf吗?或许应该是"为什么他们这样做?"
原始问题如下
人们会认为这将是一个简单的配置设置,但现在我已经躲过太久了.
我看过各种解决方案和答案:
https://gist.github.com/rdingwall/2012642
似乎不适用于最新的WebAPI版本......
以下似乎不起作用 - 属性名称仍然是PascalCased.
var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.UseDataContractJsonSerializer = true;
json.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
json.SerializerSettings.ContractResolver …Run Code Online (Sandbox Code Playgroud)