• 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,一步一个脚印,切勿急躁,一步一个台阶,总会高升。

          @陈卧龙的博客

  • 相关阅读:
    hadoop3.0.0测验
    红外遥控器通信原理_红外遥控器协议
    N76E003之WDT(看门狗定时器)
    N76E003之IIC
    电阻之上拉电阻与下拉电阻详解(转)
    GPIO输入输出各种模式(推挽、开漏、准双向端口)详解(转)
    N76E003之IO控制
    N76E003之SPI
    51单片机的idata,xdata,pdata,data的详解(转)
    N76E003之ISP
  • 原文地址:https://www.cnblogs.com/chenwolong/p/6020345.html
Copyright © 2020-2023  润新知