每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心!

悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被淘汰的不二法宝。

废话不多说,直接正题如下:

   ASP.NET Web API

(本文简称Web API),是基于ASP.NET平台构建的应用程序框架。

Web API基于在 MVC 应用程序中添加的一个特殊的 Controller,这种 Controller 称为 API Controller,和MVC普通的 Controller 相比它主要有如下两个不同的特点:

  1. Action 方法返回的是 Model 对象,而不是ActionResult
  2. 在请求时,Action 方法是基于 HTTP 请求方式来选择的

从API Controller的Action方法返回给客户端的Model对象是经过JSON编码的。API Controller的设计仅是为了提供传递Web数据的服务,因此它不支持View、Layout 和其它HTML呈现相关的特性。Web API 能支持任何有Web 功能的客户端,但最常用的是为Web应用程序中的Ajax请求提供服务。

一般我们会在下面这两种情况下选择使用API Controler:

  1. 需要大量的返回JSON格式数据的Action方法。

2. 和HTML无关,只是纯粹为数据提供服务。

初学webAPI时,我们做出的程序默认返回类型是XML格式,那么怎么使其返回JSON类型格式的数据呢?有如下两种方法:

方法一:(改配置法)

找到Global.asax文件,在Application_Start()方法中添加如下一段:代码如下:

     GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 
     此方法杀伤力太大,所有的返回的xml格式都会被毙掉,所以要根据实际需求慎重选择。

方法二:(万金油法)

新建一个类:代码如下:

 public class ResultToJson
{
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;
}
}

注意:对JavaScriptSerializer命名空间的引用,来自MSDN上的说法如下:

命名空间:   System.Web.Script.Serialization
      程序集:  System.Web.Extensions(System.Web.Extensions.dll 中)

案例代码如下:

       [HttpGet]
public HttpResponseMessage Get()
{
List<Person> list = new List<Person>();
for (int i = ; i < ; i++)
{
Person P = new Person()
{
Name = "Name" + i,
Age = i,
Sex = i % == ? "M" : "W"
};
list.Add(P);
}
return ResultToJson.toJson(list);
}
 public class Person
{
private int age; public int Age
{
get { return age; }
set { age = value; }
}
private string name; public string Name
{
get { return name; }
set { name = value; }
}
private string sex; public string Sex
{
get { return sex; }
set { sex = value; }
} }

万金油方法属于自定义返回,在不能毙掉XML返回的情况下,推荐使用的此方法。

好好学习,天天向上,初学/自学WebAPI,一步一个脚印,切勿急躁,一步一个台阶,总会高升。

@陈卧龙的博客

C# web api 返回类型设置为json的两种方法的更多相关文章

  1. C# web api返回类型设置为json的两种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  2. WEB API 返回类型设置为JSON 【转】

    http://blog.sina.com.cn/s/blog_60ba16ed0102uzc7.html web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返 ...

  3. WebApi返回类型设置为json的三种方法

    web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法: 方法一:(改配置法) 找到Global.asax文件,在Applic ...

  4. 在Java Web程序中使用监听器可以通过以下两种方法

    之前学习了很多涉及servlet的内容,本小结我们说一下监听器,说起监听器,编过桌面程序和手机App的都不陌生,常见的套路都是拖一个控件,然后给它绑定一个监听器,即可以对该对象的事件进行监听以便发生响 ...

  5. Ajax中解析Json的两种方法详解

    eval();  //此方法不推荐 JSON.parse();  //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name&qu ...

  6. Ajax中解析Json的两种方法

    eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name" ...

  7. ZBrush中设置背面遮罩的两种方法

    背面遮罩是ZBrush软件实时遮罩的一种,它的出现能够解决我们在模型雕刻时的一些问题.我们在 ZBrush®中雕刻一个比较薄的物体时,经常会不经意的雕刻到背面的物体.那么遇到此类状况该如何设置ZBru ...

  8. 解析JSON的两种方法eval()和JSON.parse()

    解析JSON 一种方法是使用eval函数. var dataObj = eval("("+json+")"); 必须把文本包围在括号中,这样才能避免语法错误,迫 ...

  9. web页面中快速找到html对应元素两种方法

    一.第一种方法(通过先进入开发模式然后再去选择网页元素) 1.打开IE.Chrome.FireFox等,按 F12 键进入开发模式 2.在打开的控制窗口左上角有个  箭头 按钮,点击它之后,此时将鼠标 ...

随机推荐

  1. spring mvc传入参数不仅仅转换为json,还可以直接将json字符串转换为具体的java对象

    1.controller层 /** * 查看主播资料 * * @return */ @RequestMapping(value = { "/actor_details" }, me ...

  2. Error when loading the SDK:

    android环境搭建:http://www.cnblogs.com/xdp-gacl/p/4322165.html eclipse启动,报了错.  解决: 从安装的android-sdk目录下的to ...

  3. 使用PHP获取网站Favicon的方法

    使用PHP获取网站Favicon的方法 Jan022014 作者:Jerry Bendy   发布:2014-01-02 23:18   分类:PHP   阅读:4,357 views   20条评论 ...

  4. SHELL 中的重定向和管道

    1. 什么叫重定向将输入或输出重新指定到别的位置. 2. 重定向输出2.1.命令执行数据流文件/设备---- 标准输入 -->命令 --- 标准输出 -->文件/设备            ...

  5. 21335592 ROWS

    CREATE TABLE w_big  SELECT * FROM  ( SEELCT * FROM w_tab UNION ALL SELECT * FROM w_tab_copy_modify ) ...

  6. Android Studio 快捷键使用

    最近开始全面转向Android Studio开发了,经常要去查快捷键,索性汇总下,自己方便查找 IDE 按键    说明 F1 帮助 Alt(Option)+F1 查找文件所在目录位置 Alt(Opt ...

  7. HelloWorld之jetty运行

    jetty是一个轻便的嵌入式servlet容器.其启动运行非常简单.eclipse下运行jetty容器有如下几步, 一.建一个普通的java工程 二.把jetty需要的包导入工程分别是jetty-6. ...

  8. 1014 C语言文法

    <程序> -> <外部声明> | <程序> <外部声明> <外部声明> -> <函数定义> | <声明> ...

  9. 注册、启动、停止windows服务

    找到本机InstallUtil.exe命令 命令行下注册服务InstallUtil.exe D:\XXXXService.exe 启动服务 net start XXXXService 停止服务net ...

  10. Linq&Lumbda

    var y = from model in list.Where(s=>s.product==product||product=="")                    ...