2016-03-05 5 views
0

я есть создать веб-сервис:как получить только данные JSON с WebService

demo.asmx

<%@ WebService Language="C#" CodeBehind="~/App_Code/demo.cs" Class="demo" %> 

demo.cs

public class demo : System.Web.Services.WebService 
{ 


    public demo() 
    { 

    } 

    [WebMethod] 

    [ScriptMethod(UseHttpGet = true, XmlSerializeString = false, ResponseFormat = ResponseFormat.Json)] 

    public string saveUserData() 
    { 


     Employee[] emps = new Employee[] { 
      new Employee() 
      { 
       Id=1, 
       Name="xyz" 
      }, 
      new Employee() 
      { 
       Id=2, 
       Name="abc" 
      } 
     }; 

     return new JavaScriptSerializer().Serialize(emps); 

    } 

} 

Теперь, когда я запускаю это то это дает мне ниже данных:

This XML file does not appear to have any style information associated with it. The document tree is shown below. 
     <string>[{"Id":1,"Name":"xyz"},{"Id":2,"Name":"abc"}]</string> 

поэтому у меня есть проверьте консоль и это дает мне

Cache-Control → private, max-age=0 
Content-Encoding → gzip 
Content-Length → 232 
Content-Type → text/xml; charset=utf-8 
Date → Sat, 05 Mar 2016 06:33:53 GMT 
Server → Microsoft-IIS/8.0 
Vary → Accept-Encoding 
X-AspNet-Version → 4.0.30319 
X-Powered-By → ASP.NET 
X-SourceFiles → =?UTF-8?B?RDpcRGVtb193ZWJz 

Его дает тип контента является text/xml даже я есть определить формат ответа JSON.

Как я могу получить только ответ json, как показано ниже?

[{"Id":1,"Name":"xyz"},{"Id":2,"Name":"abc"}] 
+0

Вы не вручную сериализации в JSON в веб-службах , Вы возвращаете сам объект, и служба сериализует его до нужного типа. Кроме этого, - – GSerg

+0

Возможный дубликат [Получить данные JSON с jQuery из службы .NET: запутано с настройкой ajax] (http://stackoverflow.com/questions/5690882/get-json-data-with-jquery-from -a-net-service-confused-with-ajax-setup) – GSerg

+0

@GSerg Я не использую 'ajax' на странице aspx. этот applicaiton не поддерживает страницы aspx. Я просто создаю веб-сервисы. – deepak

ответ

0

следует использовать следующее, Не сериализовать вручную, просто сделайте следующее

[WebService(Namespace = "http://example.com/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]System.Web.Services.WebService 
[ScriptService] 
public class services :WebService 
{  
    [WebMethod(CacheDuration = 60)] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public List<TestObject> GetObjectCollection() 
    { 
      return YourService.GetObjectCollection().ToList(); 
    } 
} 

Refrences: getting-json-data-using-an-asmx-web-service или here

+0

Это может быть [недостаточно] (http://stackoverflow.com/q/5690882/11683). – GSerg

+0

да его работа с [link] (http://stackoverflow.com/questions/19563641/how-to-get-json-response-from-a-3-5-asmx-web-service) – deepak

+0

@deepak У меня есть запустил это решение и оставил комментарий. – GSerg