开发者社区> 天才小龙> 正文

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

简介: 每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心!    悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。
+关注继续查看

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

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

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

   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 = 0; i < 10; i++)
            {
                Person P = new Person()
                {
                    Name = "Name" + i,
                    Age = i,
                    Sex = i % 2 == 0 ? "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,一步一个脚印,切勿急躁,一步一个台阶,总会高升。

      @陈卧龙的博客

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19627 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
24749 0
WebADI_配置设定04_设定上传WebADI Uploader(案例)
20150901 Created By BaoXinjian 一、摘要 创建Integrator的Uploader 也就是WebADI在数据填完,并上传时如果需要选择相关参数选项,需要引用的参数 较为常用的直接From Template,则会复制一个Oracle一个预先定义的模板,添加到相关4个模板参数到这个Uploader中 1.
1434 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
14636 0
一起谈.NET技术,更改SharePoint 的web.config设置的两种方式
  MSDN上写的不是很明白,自己测试通过,记录一下:   方法一:通过创建描述一组 Web.config 修改的 XML 文件以声明方式注册 Web.config 项。   备注:   直接写一个webconfig.
698 0
WebBrowser与IE的关系,如何设置WebBrowser工作在IE9模式下?
一.问题的提出 偶然发现,Winform里的WebBrowser和IE实际安装的版本似乎并不同步,很有趣!   下面有张图,里面一个窗口是用IE9打开某网站,另一个窗口是用Winform+WebBrowser打开同样的网站,有意思的事情出现了。
1043 0
+关注
天才小龙
陈卧龙,河南人,现居苏州,擅长NET开发,三层多层架构,EF框架,针对大数据,高并发有一定的研究!
125
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载