SQL TABLE ke JSON tanpa Informasi Kolom SQL

Nov 26 2020

Saya mencoba untuk mengurai data Tabel menjadi JSON dan dalam prosesnya ingin melewati Nama Kolom Tabel dalam konversi Posting ke JSON. Di bawah ini adalah Cuplikan sampel.

DECLARE @table1 TABLE (k1 nvarchar(max), v1 nvarchar(max))

-- Note k1 is unique
INSERT INTO @table1 (k1,v1) VALUES( 'Apple', 'One')
INSERT INTO @table1 (k1,v1) VALUES( 'Banana', 'Two')
INSERT INTO @table1 (k1,v1) VALUES( 'Orange', 'Three')

SELECT k1, v1 FROM @table1
    FOR JSON PATH, WITHOUT_ARRAY_WRAPPER

--output: {"k1":"Apple","v1":"One"},{"k1":"Banana","v1":"Two"},{"k1":"Orange","v1":"Three"}
-- Expected: {"Apple","One"},{"Banana","Two"},{"Orange","Three"}

Hargai arahan!

Jawaban

1 lptr Nov 27 2020 at 12:51

--string concatenation & aggregation (string_agg () untuk sql2017 & lebih baru atau untuk xml path () untuk sql2016)

select string_agg(concat('{"', string_escape(k1, 'json'), '":"', string_escape(v1, 'json'), '"}'), ',') /*within group (order by k1)*/
from @table1