webapi输出炜json_.Net MVC 4 Web Api 输出Json 格式

1、Global 中增加json输出

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解析

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、指定返回格式

新建方法 需要程序集: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对象输出

public HttpResponseMessage GetString(string name)

{

return ToJson(name);

}

4、重写默认实现类 所有输出将被重新解析成 json

新建JsonContentNegotiator 类

public class JsonContentNegotiator : IContentNegotiator

{

private readonly JsonMediaTypeFormatter _jsonFormatter;

public JsonContentNegotiator(JsonMediaTypeFormatter formatter)

{

_jsonFormatter = formatter;

}

public ContentNegotiationResult Negotiate(Type type, HttpRequestMessage request, IEnumerable formatters)

{

var result = new ContentNegotiationResult(_jsonFormatter, new MediaTypeHeaderValue("application/json"));

return result;

}

}

WebApiConfig中使用重写

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 返回类型的操作启用查询支持。

// 若要避免处理意外查询或恶意查询,请使用 QueryableAttribute 上的验证设置来验证传入查询。

// 有关详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=279712。

//config.EnableQuerySupport();

// 若要在应用程序中禁用跟踪,请注释掉或删除以下代码行

// 有关详细信息,请参阅: http://www.asp.net/web-api

config.EnableSystemDiagnosticsTracing();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值