2017-02-09 78 views
1

我有一個C#.NET的WebAPI項目,我所有的API定製JSON serilization的形式是:就Ok()函數.NET的WebAPI

[HttpGet] 
public IHttpActionResult Get() 
{ 
    var myComplexObject = BuildResponse(); 

    return Ok(myComplexObject); 
} 

Ok()功能目前負責序列化響應對象成JSON字符串。我如何告訴框架使用自定義的JSON序列化程序而不是默認的?

+1

僅限於此請求或所有請求? – CodeCaster

+0

爲什麼不使用'return Json(myComplexObject)',因爲它返回狀態200/OK? – hakany

+0

@CodeCaster所有人 –

回答

1

如果你想使用自定義序列的所有請求,然後在WebApiConfig.cs配置HttpConfiguration

// Add custom formatter - add at the top so it fires first! 
// This leaves the old one in place so JsonValue/JsonObject/JsonArray still are handled 
config.Formatters.Insert(0, new CustomJsonNetFormatter()); 

下面是關於如何使自己的serailizer

Using an alternate JSON Serializer in ASP.NET Web API

0

實例的文章通過調用OK()方法返回,您可以創建新的OkNegotiatedContentResult。從那裏你把你的JsonSerializerSettings。

實際上,當您調用OK(T content)方法時,它將幫助您創建新的OkNegotiatedContentResult對象。它會將你的響應對象包裹在那裏。所以你可以直接。 希望它有幫助。

+0

但是,你實際上繞過了內容協商和硬編碼JSON支持。 – CodeCaster