Web service should return json

I need my web service to return JSON ...

I have the following code in my .asmx file:

namespace Feed { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] public class searchPerson : System.Web.Services.WebService { [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public Person GetDave() { Person dave = new Person(); dave.FirstName = "Dave"; dave.LastName = "Ward"; return dave; } } } 

Which returns the following:

 <?xml version="1.0" encoding="utf-8"?> <Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> <FirstName>Dave</FirstName> <LastName>Ward</LastName> </Person> 

How to make it return JSON instead of XML?

+5
source share
2 answers

Your web service definition looks correct. Make sure you call the service through the message and remember that the key indicates the header of the content type as application/json .

(This uses jQuery, but you can use low level javascript if you want)

 $.ajax({ type: "POST", contentType: "application/json; charset=utf-8;", url: "http://MyWebServiceURL", data: JSON.stringify({ ParameterName: "DataToSend" }), dataType: "json", success: function (data, textStatus, jqXHR) { //do something }, error: function (jqXHR, textStatus, errorThrown) { //fail nicely } }); 
+5
source

Add the following links before starting:

 using System.Web.Script.Services; using System.Web.Script.Serialization; 

Use the code below in your method to convert any data to the JSON data format at the end:

 JavaScriptSerializer serializer = new JavaScriptSerializer(); return serializer.Serialize(empData); 

empData is an array of DataRows from a DataTable.

+1
source

All Articles