c# POST JSON 作为所有请求的驼峰式大小写

r3p*_*ica 4 c# json

我已经将 .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 将应用于所有响应和请求。

有谁知道如何打开全局驼峰式开关?

Ste*_*ner 5

在这种情况下,您不想为所有请求更改它,因此只需使用您发送给他们的模型上的属性。

using Newtonsoft.Json;

[JsonProperty("Name")]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)

这将确保您以所需的格式将其发送给他们。