Compartilhar via


Formatando o Resultado em T-SQL para o padrão JSON

Introdução

A transmissão e o processamento de dados é algo muito importante. Em alguns segmentos de mercado, quanto mais veloz é o processo de consulta de uma informação, mais confiável ela é.

Uma excelente forma de processar os dados para exibição em um aplicativo móvel ou web é utilizando o padrão JSON (JavaScript Object Notation).

Vamos realizar uma consulta em um banco de dados SQL Server e disponibilizar o retorno destes dados no formato utilizado para consumo e processamento através de JSON. Este padrão é muito útil e poderá ser utilizado em diferentes plataformas de programação, como: ASP.Net, WinForms e principalmente para App's do Windows Phone.

Você poderá identificar que todos os registros consultados em uma tabela poderão ser retornados em apenas uma única linha, com a identificação de cada coluna e separados por cada registro.

Retornar os dados de uma consulta à partir de uma tabela no SQL Server para apenas uma linha, diminui a quantidade de bytes que deverão ser trafegados na rede até a aplicação do usuário e isto torna todo o processo mais rápido e com um baixo custo de link.

Construindo o ambiente para Teste

Para que possamos reproduzir esta formatação de dados de vários registros dentro de apenas uma linha de saída do SQL Server, que é a principal vantagem deste padrão para todo ambiente onde os dados são trafegados, vamos criar uma tabela com alguns dados para simular nossa consulta.

Veja este script T-SQL abaixo


--CREATING A TABLE FOR DEMO
CREATE TABLE dbo.TB_EXAMPLE(
  ID_EXAMPLE int NOT NULL IDENTITY(1,1),
  NM_EXAMPLE varchar(25) NOT NULL,
  CD_ACTIVE bit NOT NULL DEFAULT 1,
);
GO

--INSERTING 100 DIFFERENT ROWS ON TABLE
INSERT INTO TB_EXAMPLE (NM_EXAMPLE) VALUES ('ITEM ' + CONVERT(VARCHAR,ISNULL(@@IDENTITY, 0)));
GO 100

--VIEWING THE 100 ROWS
SELECT * FROM TB_EXAMPLE;
GO


Imagem 1 - See this output SQL script in the image below

Após criar nossa tabela de demonstração e inserir alguns dados, vamos nos concentrar em retornar apenas às informações desejadas para o usuário no formato JSON apropriado para nossa demonstração.

Formatando resultados T-SQL para JSON

 Para facilitar o entendimento da formatação de dados no padrão utilizado pelo JSON, vamos executar uma consulta T-SQL simples, que irá retornar os mesmos registros da consulta formatada.

Para demonstrar que o retorno dos dados são flexíveis e poderão ser modificados de acordo com às necessidades do usuário, vamos limitar a consulta para obter apenas os 10 primeiros registros, com ID_EXEMPLE maior do que 10.

Para formatar corretamente nossos dados para o padrão JSON, utilizaremos o método FOR XML PATH para estruturar o resultado em apenas uma linha e o método STUFF para transformar o resultado do XML em uma string.

Entre estas configurações de T-SQL, incluímos também às identificações das colunas de cada registro para que o objeto do JSON possa processar corretamente cada registro e suas respectivas colunas.

Então, o padrão utilizado pelo JSON é isolar cada registro entre chaves "{}" e separar por vírgula. Dentro de cada registro, identificamos às colunas e seus respectivos valores separados por ":" (dois pontos) e cada "coluna/valor" é separada por vígula.

Por exemplo: "Nome_da_Coluna1":"Valor_da_Coluna1","Nome_da_Coluna2":"Valor_da_Coluna2"

Veja abaixo o script T-SQL com a identificação da coluna "ID_EXAMPLE" como "id" e da coluna "NM_EXAMPLE" como "name".


--VIEWING TOP 10 ROWS, WHERE "ID_EXAMPLE" > 10
SELECT TOP 10 ID_EXAMPLE, NM_EXAMPLE FROM TB_EXAMPLE WHERE ID_EXAMPLE > 10;
GO

--RETURNING DATAS ON SINGLE ROW TO "JSON FORMAT" OBJECT
SELECT STUFF((
       SELECT TOP 10 '{id:' + CONVERT(VARCHAR, ID_EXAMPLE) + ',name:"' + CONVERT(VARCHAR, NM_EXAMPLE) + '"},'
FROM TB_EXAMPLE
WHERE ID_EXAMPLE > 10
FOR XML PATH('')), 1, 0, '') AS A;
GO


**Imagem 2 - See this output SQL script in the image below (click to enlarge)
**

Assim formatamos de um modo simples e prático o retorno dos dados de uma tabela em SQL Server para o padrão JSON. É importante ser criado uma estrutura simples para formatar estes tipos de dados, assim o processamento da consulta formatada se torna mais rápido e a manutenção de consultas geradas pelo usuário na aplicação também fica mais simples de ser identificada.

Para validar se o retorno de nossos dados nesta demonstração estão corretos, basta compararmos um ou mais registros com a consulta simplificada. No exemplo indicado na "Imagem 2", comparamos o registro com "ID_EXAMPLE" igual à 12.

Como podemos observar, os valores estão corretos pois o valor na consulta simples é "ID_EXAMPLE" = 12 e "NM_EXAMPLE" = "ITEM 11" e o valor na consulta formatada no padrão JSON é "{id:12,name:"ITEM 11"}".

Conclusão

Possibilitar que seus usuários acessem suas informações em diferentes plataformas é uma vantagem e um excelente forma de valorizar sua aplicação, mas é extremamente importante que o resultado sejam obtidos de forma rápida. Isso permite que seus usuários não estejam dependentes de um bom link com a web.

Processar e formatar os dados diretamente no SQL Server se torna uma enorme vantagem para diminuir o processamento no seu servidor da camada de negócios, onde estão hospedados seus aplicativos ou até mesmo na máquina utilizada pelo usuário final.

O padrão definido pelos objetos JSON distribuem o processamento entre às camadas de sua solução de modo que torna sua aplicação mais enxuta e de fácil portabilidade de dados.

Mais uma vez os métodos em T-SQL demonstram como podem facilitar a vida de um desenvolvedor para compartilhar as informações de seu banco de dados SQL Server.


Referências

Veja Também

Outros Idiomas