44 votes

Fonction SQL Server SELECT vers JSON

Je souhaite afficher les résultats d'une SELECT tant qu'objet JSON.

J'aimerais que ce soit une fonction et non une procédure stockée !

Par exemple, le tableau ci-dessous Utilisateurs

 id    name        active
1     Bob Jones   1
2     John Smith  0

Serait retourné comme ceci:

 [{"id":1,"name":"Bob Jones","active":1},{"id":2,"name":"John Smith","active":0}]

Merci d'avance.

74voto

Kirill Polishchuk Points 28058

À partir de SQL Server 2016, vous pouvez utiliser for json :

 declare @t table(id int, name nvarchar(max), active bit)
insert @t values (1, 'Bob Jones', 1), (2, 'John Smith', 0)

select id, name, active
from @t
for json auto

Avec les anciennes versions de SQL Server, vous pouvez utiliser for xml path , par exemple :

 select '[' + STUFF((
        select 
            ',{"id":' + cast(id as varchar(max))
            + ',"name":"' + name + '"'
            + ',"active":' + cast(active as varchar(max))
            +'}'

        from @t t1
        for xml path(''), type
    ).value('.', 'varchar(max)'), 1, 1, '') + ']'

Sortir:

 [{"id":1,"name":"Bob Jones","active":1},{"id":2,"name":"John Smith","active":0}]

17voto

Amrik Points 28

Juste pour améliorer la réponse avec les derniers changements technologiques. avec le serveur sql 2016

 select id, name ,active 
    from  tableName 
      FOR JSON AUTO

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X