asp.net mvc让api返回json格式

第一种方法

API完整代码

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;

namespace WebSocket.Api
{
    /// <summary>
    /// List文章列表
    /// </summary>
    public class ListController : ApiController
    {
        // GET api/<controller>
        /// <summary>
        /// Listjson方法
        /// </summary>
        /// <returns></returns>
        [AcceptVerbs("GET", "POST")]
        [Route("API/List/Listjson/")]
        [ResponseType(typeof(ReturnResult))]
        public HttpResponseMessage Listjson()
        {
            ReturnResult result = new ReturnResult() {code = 0,msg="成功"};
            result.data = JsonConvert.SerializeObject(new string[] { "value1", "value2" });
            string json = JsonConvert.SerializeObject(result); 
            return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
        }

    }

    internal class ReturnResult
    {
        /// <summary>
        ///数据状态一切正常的状态码 0:成功,1:失败
        /// </summary>
        public int code { get; set; } = 1;

        /// <summary>
        /// 状态信息
        /// </summary>
        public String msg { get; set; } = "失败";

        /// <summary>
        /// 数据详情
        /// </summary>
        public string data { get; set; }

        /// <summary>
        /// 数据总条数
        /// </summary>
        public int count { get; set; } = 0;
    }
}

这里用到了

1.Newtonsoft.Json

2.设置请求类型

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

 3.特性路由

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

特性路由开启

项目》App_Start》RouteConfig.cs

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

 完整代码

namespace WebSocket
{
    public class RouteConfig
    {
        
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapMvcAttributeRoutes();
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

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方法末尾加上如下代码

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

WebApiConfig.cs 完整代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace HaoSiJiaWeb
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = RouteParameter.Optional }
          ); 

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

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙-极纪元JJY.Cheng

客官,1分钱也是爱,给个赏钱吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值