3

I'm using the below code to retrieve data in json format using web service But getting result in both XML and json format. Below is the code

[WebMethod(Description = "Get Employees")]
    public string getEmployees()
    {

        //List<employee> l=new List<employee>();
        //l.Add(new employee{ID=1,name="sreekanth"});
        //l.Add(new employee{ID=2,name="pradeep"});
        //l.Add(new employee{ID=3,name="swaroop"});
        //l.Add(new employee{ID=4,name="nagman"});
        //l.Add(new employee{ID=5,name="chethan"});
        //return l;
        DataTable table = new DataTable();
        table.Columns.Add("userid");
        table.Columns.Add("phone");
        table.Columns.Add("email");


        table.Rows.Add(new[] { "1", "9999999", "test@test.com" });
        table.Rows.Add(new[] { "2", "1234567", "foo@test.com" });
        table.Rows.Add(new[] { "3", "7654321", "bar@test.com" });

        var query = from row in table.AsEnumerable()
                    select new
                    {
                        userid = (string)row["userid"],
                        phone = (string)row["phone"],
                        email = (string)row["email"]
                    };

        JObject o = JObject.FromObject(new
        {
            Table = query
        });
        string result = JsonConvert.SerializeObject(o);
        //Console.WriteLine(o);

        return result  ;

    }

below is the output i'm getting...

 <?xml version="1.0" encoding="utf-8" ?> 
<string xmlns="http://tempuri.org/">{"Table":            [{"userid":"1","phone":"9999999","email":"test@test.com"},{"userid":"2","phone":"1234567","email":"foo@test.com"},{"userid":"3","phone":"7654321","email":"bar@test.com"}]}</string> 

I want the result only in Json

svick
  • 236,525
  • 50
  • 385
  • 514
  • Why are you using a DataTable instead of a List? – Kevin Brydon Mar 16 '13 at 12:10
  • Web services are inherently XML based. You can change your service to be a RESTful service, which can return anything you like over HTTP. Check out this similar question and answer: http://stackoverflow.com/questions/8205081/web-service-should-return-json - notice the ScriptMethod attribute in the code. – Dmitriy Khaykin Mar 16 '13 at 12:12
  • Kevin Brydon Please let me know if I use list can this issue be solved?? – user2176932 Mar 16 '13 at 12:13

1 Answers1

2

Use ScriptMethod attribute with ResponseFormat set to ResponseFormat.Json:

[WebMethod(Description = "Get Employees")]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string getEmployees()

Additionally, your class has to be marked with [ScriptService] attribute.

MarcinJuraszek
  • 124,003
  • 15
  • 196
  • 263