Para mostrar como retornar dados no formato JSON, foi criado um webservice que retorna a relação de Estados do Brasil, juntamente com as informações de capital, área em km2 e abreviação de cada estado.
Para que o webservice retorne os dados em JSON é necessário inserir o atributo [System.Web.Script.Services.ScriptService] na classe do webservice (linha 4) e o atributo [ScriptMethod(ResponseFormat=ResponseFormat.Json)] (linha 45) no método que vai retornar os dados, como demonstrado no código abaixo:
1: [WebService(Namespace = "http://tempuri.org/")]
2: [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
3: // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
4: [System.Web.Script.Services.ScriptService]
5: public class Service : System.Web.Services.WebService
6: {
7: private string[,] estados = new string[27, 4]
8: {
9: {"Acre", "AC", "Rio Branco", "152581,4"},
10: {"Alagoas", "AL", "Maceió", "27767,7"},
11: {"Amapá", "AP", "Macapá", "142814,6"},
12: {"Amazonas", "AM", "Manaus", "1570745,7"},
13: {"Bahia", "BA", "Salvador", "564692,7"},
14: {"Ceará", "CE", "Fortaleza", "148825,6"},
15: {"Distrito Federal", "DF", "Brasília", "5822,1"},
16: {"Espírito Santo", "ES", "Vitória", "46077,5"},
17: {"Goiás", "GO", "Goiânia", "340086,7"},
18: {"Maranhão", "MA", "São Luís", "331983,3"},
19: {"Mato Grosso", "MT", "Cuiabá", "903357,9"},
20: {"Mato Grosso do Sul", "MS", "Campo Grande", "357125,0"},
21: {"Minas Gerais", "MG", "Belo Horizonte", "586528,3"},
22: {"Pará", "PA", "Belém", "1247689,5"},
23: {"Paraíba", "PB", "João Pessoa", "56439,8"},
24: {"Paraná", "PR", "Curitiba", "199314,9"},
25: {"Pernambuco", "PE", "Recife", "98311,6"},
26: {"Piauí", "PI", "Teresina", "251529,2"},
27: {"Rio de Janeiro", "RJ", "Rio de Janeiro", "43696,1"},
28: {"Rio Grande do Norte", "RN", "Natal", "52796,8"},
29: {"Rio Grande do Sul", "RS", "Porto Alegre", "281748,5"},
30: {"Rondônia", "RO", "Porto Velho", "237576,2"},
31: {"Roraima", "RR", "Boa Vista", "224299,0"},
32: {"Santa Catarina", "SC", "Florianópolis", "95346,2"},
33: {"São Paulo", "SP", "São Paulo", "248209,4"},
34: {"Sergipe", "SE", "Aracaju", "21910,3"},
35: {"Tocantins", "TO", "Palmas", "277620,9"}
36: };
37:
38: public Service () {
39:
40: //Uncomment the following line if using designed components
41: //InitializeComponent();
42: }
43:
44: [WebMethod]
45: [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
46: public string GetEstados() {
47: JavaScriptSerializer js = new JavaScriptSerializer();
48:
49: List<object> obj = new List<object>();
50:
51: for (int i = 0; i < estados.GetUpperBound(0); i++)
52: {
53: Estados estado = new Estados();
54: estado.Nome = estados[i, 0];
55: estado.Abreviacao = estados[i, 1];
56: estado.Capital = estados[i, 2];
57: estado.Area = estados[i, 3];
58:
59: obj.Add(estado);
60: }
61:
62: return js.Serialize(obj);
63: }
64:
65: private class Estados
66: {
67: public string Nome { get; set; }
68: public string Abreviacao { get; set; }
69: public string Capital { get; set; }
70: public string Area { get; set; }
71: }
72: }
No método GetEstados() foi utilizada a classe JavaScriptSerializer (linha 47) para criar um objeto que serializa no formato JSON, a lista de objetos Estados.
Na execução do webservice obtemos o seguinte retorno:

Na figura podemos observar que os dados foram retornados em JSON, mas precisamos ter um cuidado no momento de utilizar o retorno deste webservice, porque mesmo o retorno dos dados estando no formato JSON o webservice na verdade retorna um XML com uma tag <string>, onde no valor da string são retornados os dados no formato JSON.
Para que aplicações possam utilizar os dados é necessário fazer a leitura somente da tag <string>. A aplicação que utilizar os dados deste webservice precisa ler o conteúdo da tag <string> para obter a informação em JSON.
Segue uma figura com os dados já formatados como Json.
