当前位置:   article > 正文

asp.net mvc让api返回json格式_mvc api json

mvc api json

第一种方法

API完整代码

  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Net;
  6. using System.Net.Http;
  7. using System.Web.Http;
  8. using System.Web.Http.Description;
  9. namespace WebSocket.Api
  10. {
  11. /// <summary>
  12. /// List文章列表
  13. /// </summary>
  14. public class ListController : ApiController
  15. {
  16. // GET api/<controller>
  17. /// <summary>
  18. /// Listjson方法
  19. /// </summary>
  20. /// <returns></returns>
  21. [AcceptVerbs("GET", "POST")]
  22. [Route("API/List/Listjson/")]
  23. [ResponseType(typeof(ReturnResult))]
  24. public HttpResponseMessage Listjson()
  25. {
  26. ReturnResult result = new ReturnResult() {code = 0,msg="成功"};
  27. result.data = JsonConvert.SerializeObject(new string[] { "value1", "value2" });
  28. string json = JsonConvert.SerializeObject(result);
  29. return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
  30. }
  31. }
  32. internal class ReturnResult
  33. {
  34. /// <summary>
  35. ///数据状态一切正常的状态码 0:成功,1:失败
  36. /// </summary>
  37. public int code { get; set; } = 1;
  38. /// <summary>
  39. /// 状态信息
  40. /// </summary>
  41. public String msg { get; set; } = "失败";
  42. /// <summary>
  43. /// 数据详情
  44. /// </summary>
  45. public string data { get; set; }
  46. /// <summary>
  47. /// 数据总条数
  48. /// </summary>
  49. public int count { get; set; } = 0;
  50. }
  51. }

这里用到了

1.Newtonsoft.Json

2.设置请求类型

[AcceptVerbs("GET", "POST")]

 3.特性路由

[Route("API/List/Listjson/")]

特性路由开启

项目》App_Start》RouteConfig.cs

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 完整代码

  1. namespace WebSocket
  2. {
  3. public class RouteConfig
  4. {
  5. public static void RegisterRoutes(RouteCollection routes)
  6. {
  7. routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
  8. routes.MapMvcAttributeRoutes();
  9. routes.MapRoute(
  10. name: "Default",
  11. url: "{controller}/{action}/{id}",
  12. defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
  13. );
  14. }
  15. }
  16. }

4.设置响应类型特性

[ResponseType(typeof(ReturnResult))]

这个特性需要引入

using System.Web.Http.Description;

里面的typeof(ReturnResult)ReturnResult是一个模型类,上面的“API完整代码”有写

效果展示

我封装好的代码

 我的Swagger实例ASP.NET MVC集成SwaggerUI,Swashbuckle v5.6.0配置

https://blog.csdn.net/cplvfx/article/details/108716279

可能你还需要

c# asp.net mvc API接口安全过滤,api域名过滤,api域名+端口过滤

https://blog.csdn.net/cplvfx/article/details/108510697


第二种方法

参考:http://blchen.com/change-asp-net-web-api-default-return-type-to-json/

ASP.NET Web API的controller默认的返回数据格式是XML格式,要改成返回JSON格式只需要在WebApiConfig.cs文件里的Register方法末尾加上如下代码

  1. var json = config.Formatters.JsonFormatter;
  2. json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
  3. json.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";//返回时间格式化
  4. config.Formatters.Remove(config.Formatters.XmlFormatter);

WebApiConfig.cs 完整代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web.Http;
  5. namespace HaoSiJiaWeb
  6. {
  7. public static class WebApiConfig
  8. {
  9. public static void Register(HttpConfiguration config)
  10. {
  11. // Web API 配置和服务
  12. // Web API 路由
  13. config.MapHttpAttributeRoutes();
  14. config.Routes.MapHttpRoute(
  15. name: "DefaultApi",
  16. routeTemplate: "api/{controller}/{id}",
  17. defaults: new { id = RouteParameter.Optional }
  18. );
  19. var json = config.Formatters.JsonFormatter;
  20. json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
  21. json.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";//返回时间格式化
  22. config.Formatters.Remove(config.Formatters.XmlFormatter);
  23. }
  24. }
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/550327
推荐阅读
相关标签
  

闽ICP备14008679号