我已经将 .Net 对象作为驼峰式 JSON 返回,并且我已经这样做了:
// Web API configuration and services
var formatters = config.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var serializerSettings = jsonFormatter.SerializerSettings;
// Remove XML formatting
formatters.Remove(config.Formatters.XmlFormatter);
jsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
// Configure our JSON output
serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
serializerSettings.Formatting = Formatting.Indented;
Run Code Online (Sandbox Code Playgroud)
这一切都工作正常,但今天我发布到外部 API 并收到错误,事实证明问题在于使用 Pascal 大小写而不是 Camel 大小写的 json 格式。我发布的数据如下所示:
{"CartId":"8fb3792f-81af-45e6-92f6-f08366624f1e","Id":"944990015513953203","Quantity":5}
Run Code Online (Sandbox Code Playgroud)
我四处搜寻,找到了一种将数据转换为驼峰式大小写的解决方案,如下所示:
var serializer = new JsonSerializer()
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var json = JObject.FromObject(model, serializer);
Run Code Online (Sandbox Code Playgroud)
但正如您所猜测的,这并不是真正合适,因为我不想在每个控制器的每个 POST 操作中都这样做。我假设上面的 WebApiConfig 将应用于所有响应和请求。
有谁知道如何打开全局驼峰式开关?
在这种情况下,您不想为所有请求更改它,因此只需使用您发送给他们的模型上的属性。
using Newtonsoft.Json;
[JsonProperty("Name")]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
这将确保您以所需的格式将其发送给他们。