C# web api返回型別設定為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的返回,而方法二是自定義返回。
轉載在:http://www.poluoluo.com/jzxy/201402/262277.html
相關推薦
C# web api返回型別設定為json的兩種方法
web api寫api介面時預設返回的是把你的物件序列化後以XML形式返回,那麼怎樣才能讓其返回為json呢,下面就介紹兩種方法: 方法一:(改配置法) 找到Global.asax檔案,在Application_Start()方法中新增一句: 。程式碼如下: Glo
WebApi返回型別設定為json的三種方法
方法一:(改配置法) 找到Global.asax檔案,在Application_Start()方法中新增一句: GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Cl
通過HttpClient呼叫WebApi的Get、Post方法(返回型別限定為json格式)
public class HttpClientHelper { public static string GetResponseJson(string url) { HttpClient httpClient
[轉]Web APi之認證(Authentication)兩種實現方式【二】(十三)
用戶數 ted das 客戶 元素 基礎 目標 開始 net 本文轉自:http://www.cnblogs.com/CreateMyself/p/4857799.html 前言 上一節我們詳細講解了認證及其基本信息,這一節我們通過兩種不同方式來實現認證,並且分析如
Web APi之認證(Authentication)兩種實現方式【二】(十三)
基於web 推薦 zed {0} scheme sage https 函數 ges 原文:Web APi之認證(Authentication)兩種實現方式【二】(十三)前言 上一節我們詳細講解了認證及其基本信息,這一節我們通過兩種不同方式來實現認證,並且分析如何合理的利用
Flask 設定cookie的兩種方法.獲取cookie,和刪除cookie的方法(修改過期時間)
設定cookie 方法一: 建立物件 make_response的物件 呼叫物件 的set_cookie方法設定cookie 方法二: 直接設定表單頭 除了鍵值對,其他部分可去瀏覽器檢查摘抄 resp.headers["Set-Cook
C語言中求最大公約數的兩種方法:輾轉相除法和更相減損術
輾轉相除法: 輾轉相除法, 又名歐幾里德演算法(Euclidean algorithm),是求最大公約數的一種方法。它的具體做法是:用較小數除較大數,再用出現的餘數(第一餘數)去除除數,再用出現的餘數(第二餘數)去除第一餘數,如此反覆,直到最後餘數是0為止。如
TextView 上下左右設定圖片的兩種方法
1,text動態設定圖片方法 drawable = getResources().getDrawable(R.mipmap.an_icon_2x); /// 這一步必須要做,否則不會顯示. drawable.setBounds(0, 0, drawable.getMinimumWidth()
C#產生一組不重複隨機數的兩種方法
最近在開發專案的過程中,需要產生一些隨機數,如果我們簡單的用C#中的Random.Next方法,很難產生一組少重複的隨機數(當然是偽隨機數),在網上也看了很多方法,貌似也不可行,或者比較複雜。於是,參考網上的一些方法,自己寫了兩個個產生一組偽隨機數的方法。 方法一的程式碼如
php設定時區的兩種方法
php5後都要自己設定時區,要麼修改php.ini的設定,要麼在程式碼裡修改。 在PHP.INI中設定時區 date.timezone = PRC 在程式碼中設定時區 1 date_default_timezone_set('Asia/Shanghai');/
.net mvc web api 返回 json 內容,過濾值為null的屬性
.net mvc web api 返回 json 內容時,好多屬性為null的沒必要下發。 下面看下怎麼過濾值為null的屬性 1.響應內容(過濾前) {"msg":"初始化成功!","code"
web api返回json資料
首先咋們瞭解一下什麼事json: JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。它基於ECMAScript的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C、C++、C#、Jav
後臺date型別轉換為json字串時,返回前臺頁面的是long time值問題解決
https://blog.csdn.net/zhanglf02/article/details/77770118問題頁面回顧: 本例環境和框架:maven工程+ssm框架+jdk1.7+tomcat7.0 解決方案: 解決方案分為兩種: 第一種:如果bo(實體類)對應的欄位(
C# web api 中過濾器的使用
抽象類 面向切面 控制 ted 日誌 開篇 nac 基類 log4net 一、開篇 Fiter在Web API中經常會用到,主要用於記錄日誌,安全驗證,全局錯誤處理等;Web API提供兩種過濾器的基本類型:actionfilterattribute,exception
【GSON】複雜集合型別轉換為Json
使用Gson將List<Map<String,Object>>型別的物件轉換為Json格式 轉換物件賦值 List < Map < String , Object > > lists = new ArrayList <
【Spring Boot-技巧】API返回值去除為NULL的欄位
簡介 在前後端分離的微服務時代,後端API需要良好的規範。本篇主要將一個數據返回時的一個小技巧-- 過濾為空欄位 解決痛點:將有效解決資料傳輸過程中的流量浪費。 元件簡介 Jackson ObjectMapper 通過自定義配置該元件可以選擇性序列化返回的JSON。 官方解釋 Spring MVC(客戶端和伺
JavaScript中string型別轉換為json型別
在使用一個外掛時,它的資料接收的是json陣列的型別,但是我寫的是servlet中的資料是list格式的,這裡我們可以將list中的資料整理一下,整理成“json”型別的字串,這些資料傳到jsp中是string型別的,需要我們轉一下格式: <div> &l
普元 EOS Platform 7.5 datagrid裡使用nui-datepicker,將日期型別設定為dateFormat="yyyy-MM-dd",但編輯後,日期顯示仍包含時分秒
【問題】 EOS Platform 7.5 datagrid裡使用nui-datepicker,將日期型別設定為dateFormat="yyyy-MM-dd",但編輯後,日期顯示仍包含時分秒 編輯前,顯示為年月日: 編輯後,現在顯示為年月日時分秒 【解答】
將字典型別(Dictionary)型別資料序列化為json資料及拼接為key1=value1&key2=value2的兩種方法
一、序列化為Json字串 當需要將物件轉為{ "street": "科技園路.", "city": "江蘇蘇州", "country": "中國"}這種格式時使用序列化(不引入外部dll的方式)
Web Api返回值
namespace WebApi.Controllers { public class HomeController : ApiController { [HttpGet] public int GetByAge(string