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

      @陈卧龙的博客

相关文章
成功解决:Failed to load resource: net::ERR_FILE_NOT_FOUND
这篇文章提供了解决"Failed to load resource: net::ERR_FILE_NOT_FOUND"错误的步骤,通过修改配置文件中的资源路径设置为相对路径"./"来成功运行打包后的项目。
成功解决:Failed to load resource: net::ERR_FILE_NOT_FOUND
|
人工智能 自然语言处理 文字识别
C# 10分钟完成百度翻译(机器翻译)——入门篇
C# 10分钟完成百度翻译(机器翻译)——入门篇
|
Java
【Java系列】List数据去重的五种有效方法
目录 1:使用java8新特性stream进行List去重 (distinct()方法) 2,借助Set的特性进行去重(set和list转换去重) 3,遍历List集合,将元素添加到另一个List集合中 4,利用set集合特性保持顺序一致去重 5,使用list自身方法remove()–&gt;不推荐 1:使用java8新特性stream进行List去重 (distinct()方法) public static List&lt;String&gt; delRepeat(Lis.
555 0
【Java系列】List数据去重的五种有效方法
|
搜索推荐 安全 数据安全/隐私保护
构建高效网站后台会员管理系统:实战指南与代码示例
【7月更文挑战第5天】在当今的互联网时代,几乎每个网站或应用程序都需要一个强大的会员管理系统来维护用户信息、权限控制以及个性化体验。一个设计良好的会员管理系统不仅能够提升用户体验,还能增强数据安全性和运营效率。本文将深入探讨如何从零开始构建一个网站后台会员管理系统,涵盖系统设计思路、关键技术选型、功能模块实现,以及实战代码示例。
1536 3
|
物联网 C#
【C#】简单的蓝牙通讯功能实现
【C#】简单的蓝牙通讯功能实现
992 0
|
容器 .NET 开发框架
.net core 注入中的三种模式:Singleton、Scoped 和 Transient
我们都知道在 Startup 的 ConfigureServices 可以注入我们想要的服务,那么在注入的时候有三种模式可以选择,那么我们在什么时候选择什么样的模式呢? 在讲注入模式之前,我觉得很有必要了解服务生存期的概念! 服务生存期:ASP.NET Core 提供了一个内置的服务容器 IServiceProvider 负责管理服务的生命周期,从被依赖注入容器创建开始(就是将服务注入到你要使用的类的构造函数中),然后框架负责创建依赖关系的实例,并在不再需要时对其进行处理(就是说等我们调用完服务时,容器会自己去对注入的服务进行释放)。
2256 0
|
消息中间件 存储 数据采集
Kafka与ELK实现一个日志系统
Kafka与ELK实现一个日志系统
747 1
Kafka与ELK实现一个日志系统
|
测试技术 编译器 Windows
|
前端开发 Java Maven
Spring 和 Spring Boot 之间的比较
本文对比了标准Spring框架与Spring Boot的区别,重点分析两者在模块使用(如MVC、Security)上的差异。Spring提供全面的Java开发基础设施支持,包含依赖注入和多种开箱即用的模块;而Spring Boot作为Spring的扩展,通过自动配置、嵌入式服务器等功能简化开发流程。文章还探讨了两者的Maven依赖、Mvc配置、模板引擎配置、启动方式及打包部署等方面的异同,展示了Spring Boot如何通过减少样板代码和配置提升开发效率。总结指出,Spring Boot是Spring的增强版,使应用开发、测试与部署更加便捷高效。
1539 12
|
Java API 分布式数据库
HBase thrift/thrift2 使用指南
Thrift server简介 Thrift server是HBase中的一种服务,主要用于对多语言API的支持。基于Apache Thrift(多语言支持的通信框架)开发,目前有两种版本thrift和thrift2。
21247 0

热门文章

最新文章