更新
感谢所有的答案。我正在一个新项目上,看来我终于明白了这一点:似乎实际上是以下代码导致的:
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。
它无处不在 ...我可以首先说一下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 = new CamelCasePropertyNamesContractResolver();
Mayank的答案在这里:CamelCase JSON WebAPI子对象(嵌套对象,子对象)似乎不尽人意,但可行的答案,直到我意识到在使用linq2sql时必须将这些属性添加到生成的代码中...
有办法自动执行此操作吗?这种“讨厌”困扰了我很长时间。
JsonSerializer
。stackoverflow.com/questions/13274625/…–