更新
谢谢你的回答。我正在进行一个新项目,看起来我终于搞清楚了这个问题: 看起来下面的代码实际上是罪魁祸首:
public static HttpResponseMessage GetHttpSuccessResponse(object response, HttpStatusCode code = HttpStatusCode.OK)
{
return new HttpResponseMessage()
{
StatusCode = code,
Content = response != null ? new JsonContent(response) : null
};
}
其他地方。
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");
}
假设它是 WebAPI,我忽略了看起来无害的 JsonContent,但事实并非如此。
这是用过的 abc 0... 我能第一个说吗,卧槽?或者应该是“他们为什么要这么做?”
最初的问题如下
有人会认为这将是一个简单的配置设置,但它逃避我太长时间了。
我研究了各种解决方案和答案:
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 = new CamelCasePropertyNamesContractResolver();
Mayank 在这里的回答是: WebAPI 子对象(嵌套对象、子对象)似乎是一个不令人满意但可行的答案,直到我意识到这些属性必须添加到生成的代码中,因为我们正在使用 linq2sql..。
有什么办法可以自动做到这一点吗? 这种“肮脏的”已经困扰了我很长一段时间了。