I saw a similar question but it did not resolve my issue. I have a JSON web service in an ASMX file;
The code for the web method
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetUserRoles(string JSONUserCode)
{
string retRoles = string.Empty;
List<JSONRole> roles = new List<JSONRole>();
{... I Populate the roles here ...}
DataContractJsonSerializer serializer = new
DataContractJsonSerializer(roles.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms, roles);
string jsonString = Encoding.Default.GetString(ms.ToArray());
ms.Close();
return jsonString;
}
This correctly formats the List correctly but wraps the entire return in XML. Here is the response:
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://formshare.com/">
[{"Name":"Accounts Payable"},{"Name":"Payroll"}]
</string>
You can view the Response your self by clicking this link:
http://dev.formshare.gologictech.com/JSON/JSONService.asmx/GetUserRoles?JSONUserCode=1234
I need the response to be just:
[{"Name":"Accounts Payable"},{"Name":"Payroll"}]
Any ideas? Thanks for your help.
The WebMethod is able to serve the same information both as XML and JSON. You need to specify what format you want (dataType) in the client, as you submit your request.
Also, you're not supposed to serialize the object to JSON manually, but rather, return roles, and it will be serialized to JSON if your client requests the data as JSON.
EDIT
jQuery example (note the dataType parameter):
$.ajax({
type: 'GET',
url: 'http://dev.formshare.gologictech.com/JSON/JSONService.asmx/GetUserRoles',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: '{"JSONUserCode":"1234"}',
success: myCallback
});
It is worth mentioning that the object will not be returned in exactly the format you specified, but rather, wrapped in an object:
{ d: [ {"Name":"Accounts Payable"}, {"Name":"Payroll"} ] }
This, however, is actually quite desirable, for added security
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