[Web API] 回傳格式設定

  在使用WebAPI遇到了2個序列化的小小問題,整理如下:

讓Client端無論如何都回應JSON格式


在Chrome瀏覽WebAPI,預設會回傳XML格式,但用IE則回傳JSON格式
image
這是因為WebAPI會判斷瀏覽器送出的Accept標頭來自動決定回應的格式,解決方式:在global.asax將xml支援格式設定移除
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();

image

解決回傳Json的欄位有中括號問題


在某一個類別的回傳會出現格式有中括號問題,如下每個欄位都被括號包起來,並多出了底線符號

image

檢查了該類別後,發現原來該類別有加上Attribute [Serializable],本想把它直擁拿掉,但想說應該有其他解決方法,找了一下文章後,果然有更好的解法。一樣在global.asax加上設定,如下忽略序列化屬性
 var contractResolver = (DefaultContractResolver)GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver;
            contractResolver.IgnoreSerializableAttribute = true;

image

參考來源


http://blog.miniasp.com/post/2012/10/13/ASPNET-Web-API-Force-return-JSON-format-instead-of-XML-for-Google-Chrome-Firefox-Safari.aspx

http://stackoverflow.com/questions/12334382/net-webapi-serialization-k-backingfield-nastiness

這個網誌中的熱門文章

[.NET Core] 將專案發行至IIS

[TFS] 分支與合併