WebMethod может обслуживать ту же информацию, что и XML и JSON. Вам нужно указать, какой формат вы хотите (dataType) в клиенте, при отправке запроса.
Кроме того, вы не должны сериализовать объект в JSON вручную, а вместо этого вернуть role , и он будет сериализован в JSON, если ваш клиент запросит данные как JSON.
EDIT
Пример jQuery (обратите внимание на параметр dataType):
$.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
});
Стоит отметить, что объект не будет возвращен точно в указанном вами формате, а будет заключен в объект:
{ d: [ {"Name":"Accounts Payable"}, {"Name":"Payroll"} ] }
Это, однако, на самом деле весьма желательно, для дополнительной безопасности