.Net基于MVC4 Web Api输出Json格式实例
本文实例讲述了.net基于mvc4 web api输出json格式的方法,分享给大家供大家参考。具体实现方法如下:
1、global 中增加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解析
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、指定返回格式
新建方法 需要程序集:
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对象输出
{
return tojson(name);
}
4、重写默认实现类 所有输出将被重新解析成 json
新建jsoncontentnegotiator 类
{
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中使用重写
{
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程序设计有所帮助。