国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - C# web api返回類型設置為json的兩種方法

C# web api返回類型設置為json的兩種方法

2019-11-28 12:48whsnow ASP.NET教程

web api寫api接口時默認返回的是把你的對象序列化后以XML形式返回,那么怎樣才能讓其返回為json呢,下面為大家介紹幾種不錯的方法

web api寫api接口時默認返回的是把你的對象序列化后以XML形式返回,那么怎樣才能讓其返回為json呢,下面就介紹兩種方法: 
方法一:(改配置法) 

找到Global.asax文件,在Application_Start()方法中添加一句: 

復制代碼代碼如下:

GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 


修改后: 

復制代碼代碼如下:

protected void Application_Start() 

AreaRegistration.RegisterAllAreas(); 
WebApiConfig.Register(GlobalConfiguration.Configuration); 
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
RouteConfig.RegisterRoutes(RouteTable.Routes); 
// 使api返回為json 
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 


這樣返回的結果就都是json類型了,但有個不好的地方,如果返回的結果是String類型,如123,返回的json就會變成"123"; 

解決的方法是自定義返回類型(返回類型為HttpResponseMessage) 

復制代碼代碼如下:

public HttpResponseMessage PostUserName(User user) 

String userName = user.userName; 
HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(userName,Encoding.GetEncoding("UTF-8"), "application/json") }; 
return result; 


方法二:(萬金油法) 

方法一中又要改配置,又要處理返回值為String類型的json,甚是麻煩,不如就不用web api中的的自動序列化對象,自己序列化后再返回 

復制代碼代碼如下:

public HttpResponseMessage PostUser(User user) 

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
string str = serializer.Serialize(user); 
HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") }; 
return result; 


方法二是我比較推薦的方法,為了不在每個接口中都反復寫那幾句代碼,所以就封裝為一個方法這樣使用就方便多了。 

復制代碼代碼如下:

public static HttpResponseMessage toJson(Object obj) 

String str; 
if (obj is String ||obj is Char) 

str = obj.ToString(); 

else 

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
str = serializer.Serialize(obj); 

HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") }; 
return result; 


方法三:(最麻煩的方法) 

方法一最簡單,但殺傷力太大,所有的返回的xml格式都會被斃掉,那么方法三就可以只讓api接口中斃掉xml,返回json 

先寫一個處理返回的類: 

復制代碼代碼如下:

public class JsonContentNegotiator : IContentNegotiator 

private readonly JsonMediaTypeFormatter _jsonFormatter; 

public JsonContentNegotiator(JsonMediaTypeFormatter formatter) 

_jsonFormatter = formatter; 


public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters) 

var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json")); 
return result; 


找到App_Start中的WebApiConfig.cs文件,打開找到Register(HttpConfiguration config)方法 

添加以下代碼: 

復制代碼代碼如下:

var jsonFormatter = new JsonMediaTypeFormatter(); 
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter)); 


添加后代碼如下: 

復制代碼代碼如下:

public static void Register(HttpConfiguration config) 

config.Routes.MapHttpRoute( 
name: "DefaultApi", 
routeTemplate: "api/{controller}/{action}/{id}", 
defaults: new { id = RouteParameter.Optional } 
); 
var jsonFormatter = new JsonMediaTypeFormatter(); 
config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter)); 


方法三如果返回的結果是String類型,如123,返回的json就會變成"123",解決方法同方法一。 

其實web api會自動把返回的對象轉為xml和json兩種格式并存的形式,方法一與方法三是斃掉了xml的返回,而方法二是自定義返回。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日韩av免费在线观看 | 国产aⅴ| 欧美日本韩国在线 | 天天澡天天狠天天天做 | 久久久艹 | 999国内精品永久免费视频 | 国产乱码精品一区二区三区av | 在线观看中文字幕亚洲 | 亚洲精品影院在线 | 日韩中文字幕在线播放 | 国产欧美精品一区二区三区 | 中文字幕国产视频 | 久久久久九九九九九 | 日韩欧美中字 | 国产精品久久久久久中文字 | www欧美| 999精品视频一区二区三区 | 亚州国产 | 免费一级片视频 | 激情网站免费观看 | 成人高清在线 | 中文字幕 在线观看 | 国产精品视频成人 | 免费一区 | 精品国产子伦久久久久久小说 | 国产精品尤物在线观看 | 97成人在线免费视频 | 精品无人区一区二区三区动漫 | 新久久久久久 | 国产一区二区精品在线观看 | 伦理午夜电影免费观看 | 激情五月综合网 | 国内精品久久久久久 | 中文在线视频 | 久久精品91 | 亚洲乱码国产乱码精品精98午夜 | 日本激情综合网 | 91嫩草视频在线观看 | 久久亚洲综合 | 我要看日本黄色小视频 | 一本大的之伊人 |