WebAPI返回JSON的正確格式


最近打算用WebAPI做服務端接口,返回JSON供ANDROID程序調用,結果試了好幾次JSONObject都無法解析返回的JSON字符串。看了一下服務端代碼:

       public string Get()
        {
            return "{\"errNum\":300202,\"errMsg\":\"Missing apikey\"}";
        }

打開CHROME瀏覽器,F12查看了一下返回信息,發現返回頭Content-Type是"application/xml; charset=utf-8"類型,原來WebAPI默認是返回XML類型, 有人說可以在Global.asax添加配置,代碼如下:

        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            // 使api返回為json
            GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); 
        }

按照上面方法做了之后,再F12的確是返回“application/json”了,本以為到此就結束了,萬萬沒想到的是JSONObject再次解析異常。之后又嘗試了好幾種方法,最后通過下面的方法終於返回了可以解析的JSON字符。

       public HttpResponseMessage Get()
        {
            string json = "{\"errNum\":300202,\"errMsg\":\"Missing apikey\"}";
            return new HttpResponseMessage { Content = new StringContent(json, System.Text.Encoding.UTF8, "application/json") };
        }

 總結:其實WebAPI默認建議使用RESTful風格,根據GET\POST\PUT\DELETE調用不同的ACTION,並返回HttpResponseMessage,我們可以很靈活地定義HttpResponseMessage。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM