2015-07-20 34 views
1

我已經返回.NET對象般地套管JSON,我已經做到了這一點,像這樣:C#POST 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; 

這一切工作正常,但今天我張貼到外部API和出現錯誤,事實證明,問題是使用Pascal格式而不是Camel格式的json格式。我上傳的數據是這樣的:

{"CartId":"8fb3792f-81af-45e6-92f6-f08366624f1e","Id":"944990015513953203","Quantity":5} 

我尋找了一圈,發現一個解決方案轉向將數據轉化成駱駝的情況下,像這樣:

var serializer = new JsonSerializer() 
{ 
    ContractResolver = new CamelCasePropertyNamesContractResolver() 
}; 

var json = JObject.FromObject(model, serializer); 

但你可以猜測,這是不是真的適合因爲我不想在每個控制器的每個POST操作中都這樣做。我會假設上面的WebApiConfig會應用於所有的響應以及請求。

有誰知道我可以打開一個全球駱駝案例開關?

回答

3

在這種情況下,您不希望對所有請求進行更改,只需在要發送給他們的模型上使用屬性即可。

using Newtonsoft.Json; 

[JsonProperty("Name")] 
public string Name { get; set; } 

這將確保您以您想要的格式將它發送給他們。

0

您可以設置全局默認的序列設置:

JsonConvert.DefaultSettings =() => new JsonSerializerSettings 
{ 
    ContractResolver = new CamelCasePropertyNamesContractResolver() 
}; 

,現在每次系列化你的模型,以JSON默認設置的時間將被使用:

var json = JsonConvert.SerializeObject(model); 
相關問題