zoukankan      html  css  js  c++  java
  • 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,一步一个脚印,切勿急躁,一步一个台阶,总会高升。

          @陈卧龙的博客

  • 相关阅读:
    184. Department Highest Salary【leetcode】sql,join on
    181. Employees Earning More Than Their Managers【leetcode】,sql,inner join ,where
    178. Rank Scores【leetcode】,sql
    177. Nth Highest Salary【leetcode】,第n高数值,sql,limit,offset
    176. Second Highest Salary【取表中第二高的值】,sql,limit,offset
    118. Pascal's Triangle【LeetCode】,java,算法,杨辉三角
    204. Count Primes【leetcode】java,算法,质数
    202. Happy Number【leetcode】java,hashSet,算法
    41. First Missing Positive【leetcode】寻找第一个丢失的整数,java,算法
    删除
  • 原文地址:https://www.cnblogs.com/chenwolong/p/6020345.html
Copyright © 2011-2022 走看看