web api 写 api 接口时默认返回的是把你的对象序列化后以 XML 形式返回,那么怎样才
能让其返回为 json 呢,下面为大家介绍几种不错的方法
web api 写 api 接口时默认返回的是把你的对象序列化后以 XML 形式返回,那么怎样才
能让其返回为 json 呢,下面就介绍两种方法:
方法一:(改配置法)
找到 Global.asax 文件,在 Application_Start()方法中添加一句:
代码如下:
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
修改后:
代码如下:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
// 使 api 返回为 json
GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
}
这样返回的结果就都是 json 类型了,但有个不好的地方,如果返回的结果是 String 类
型,如 123,返回的 json 就会变成"123";
解决的方法是自定义返回类型(返回类型为 HttpResponseMessage)
代码如下:
public HttpResponseMessage PostUserName(User user)
{
String userName = user.userName;
HttpResponseMessage result = new HttpResponseMessage { Content = new
StringContent(userName,Encoding.GetEncoding("UTF-8"), "application/json") };
return result;
}
方法二:(万金油法)
方法一中又要改配置,又要处理返回值为 String 类型的 json,甚是麻烦,不如就不用 web
api 中的的自动序列化对象,自己序列化后再返回
代码如下:
public HttpResponseMessage PostUser(User user)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
string str = serializer.Serialize(user);
HttpResponseMessage result = new HttpResponseMessage { Content = new
StringContent(str, Encoding.GetEncoding("UTF-8"), "application/json") };
return result;
}