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 do I force it to return JSON instead of XML?
Your webservice definition looks correct. Ensure that you are calling the service through a post and remember that the key is specifying the 'content type' header as application/json
.
(This is using jQuery but you could use low level javascript if you like)
$.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
}
});
Add the below referances before starting:
using System.Web.Script.Services;
using System.Web.Script.Serialization;
Use the below code in your method, for converting any data into JSON Data format in end:
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(empData);
empData is array of DataRows from DataTable.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With