源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

.Net基于MVC4 Web Api输出Json格式实例

  • 时间:2021-09-13 07:39 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:.Net基于MVC4 Web Api输出Json格式实例
本文实例讲述了.Net基于MVC4 Web Api输出Json格式的方法,分享给大家供大家参考。具体实现方法如下: 1、Global 中增加json输出
[u]复制代码[/u] 代码如下:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("json", "true", "application/json")); protected void Application_Start() {     AreaRegistration.RegisterAllAreas();     //添加json 解析  使用方法 http://xxx/api/action?json=true     GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(new QueryStringMapping("json", "true", "application/json"));     WebApiConfig.Register(GlobalConfiguration.Configuration);     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);     RouteConfig.RegisterRoutes(RouteTable.Routes);     BundleConfig.RegisterBundles(BundleTable.Bundles); }
2、Global 中删除xml解析
[u]复制代码[/u] 代码如下:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); protected void Application_Start() {     AreaRegistration.RegisterAllAreas();     WebApiConfig.Register(GlobalConfiguration.Configuration);     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);     RouteConfig.RegisterRoutes(RouteTable.Routes);     BundleConfig.RegisterBundles(BundleTable.Bundles);     //删除xml的解析 当返回值是string 时 直接返回string不是json对象     GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); }
3、指定返回格式 新建方法 需要程序集:
[u]复制代码[/u] 代码如下:
System.Web.Extensions public static HttpResponseMessage ToJson(Object obj) {     String str;     if (obj is String || obj is Char)     {         str = obj.ToString();     }     else     {         var serializer = new JavaScriptSerializer();         str = serializer.Serialize(obj);     }     var result = new HttpResponseMessage { Content = new StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };     return result; }
 调用户方法转换为json对象输出
[u]复制代码[/u] 代码如下:
public HttpResponseMessage GetString(string name) {      return ToJson(name); }
4、重写默认实现类 所有输出将被重新解析成 json 新建JsonContentNegotiator 类
[u]复制代码[/u] 代码如下:
public class JsonContentNegotiator : IContentNegotiator {     private readonly JsonMediaTypeFormatter _jsonFormatter;     public JsonContentNegotiator(JsonMediaTypeFormatter formatter)     {         _jsonFormatter = formatter;     }     public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable<MediaTypeFormatter> formatters)     {         var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));         return result;     } }
WebApiConfig中使用重写
[u]复制代码[/u] 代码如下:
public static void Register(HttpConfiguration config) {     config.Routes.MapHttpRoute(         name: "DefaultApi",         routeTemplate: "api/{controller}/{id}",         defaults: new { id = RouteParameter.Optional }     );     var jsonFormatter = new JsonMediaTypeFormatter();     config.Services.Replace(typeof(IContentNegotiator), new JsonContentNegotiator(jsonFormatter));     // 取消注释下面的代码行可对具有 IQueryable 或 IQueryable<T> 返回类型的操作启用查询支持。     // 若要避免处理意外查询或恶意查询,请使用 QueryableAttribute 上的验证设置来验证传入查询。     // 有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=279712。     //config.EnableQuerySupport();     // 若要在应用程序中禁用跟踪,请注释掉或删除以下代码行     // 有关详细信息,请参阅: http://www.asp.net/web-api     config.EnableSystemDiagnosticsTracing(); }
希望本文所述对大家的asp.net程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部