Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Формирование json  [new]
Term
Member

Откуда:
Сообщений: 284
Добрый день всем!

Подскажите пожалуйста

Есть табличка вида:

Create table Tab(
c_id int,
c_json varchar(max)
)

в ней данные, предположим такие
с_id - 5
c_json - {"FIO": "Mike", "age": "30"}

если делаю запрос вида

select * from Tab for json auto


то строка c_json получается такого вида {\"FIO\": \"Mike\", \"age\": \"30\"}

как нужно составить запрос чтоб результат получился такого вида:

[{
	"c_id": "5",
	"c_jason": {
		"FIO": "Mike",
		"age": "30"
	}
}]
7 дек 17, 17:52    [21016075]     Ответить | Цитировать Сообщить модератору
 Re: Формирование json  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Из известных мне способов пока есть такой вариант:

DECLARE @t TABLE (c_id int, c_json VARCHAR(MAX))
INSERT INTO @t
SELECT 5, '{"FIO": "Mike", "age": "30"}'

SELECT c_id
     , c_json = (
        SELECT FIO = JSON_VALUE(c_json, '$.FIO')
             , age = JSON_VALUE(c_json, '$.age')
        FOR JSON PATH
     )
FROM @t
FOR JSON PATH

либо извраты с REPLACE:

DECLARE @t TABLE (c_id int, c_json VARCHAR(MAX))
INSERT INTO @t
VALUES (5, '{"FIO": "Mike", "age": "30"}')
     , (6, '{"FIO": "Dick", "age": "32"}')

SELECT REPLACE((SELECT c_id, c_json = 'xxx' FOR JSON PATH), '"xxx"', c_json)
FROM @t

второй более производительный в некоторых случаях бывает
7 дек 17, 18:26    [21016162]     Ответить | Цитировать Сообщить модератору
 Re: Формирование json  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
Качаешь dbo.parseJSON вот от сюда: https://www.red-gate.com/simple-talk/sql/t-sql-programming/consuming-json-strings-in-sql-server/

Радуешься тому, что все уже сделали за тебя.
7 дек 17, 18:54    [21016260]     Ответить | Цитировать Сообщить модератору
 Re: Формирование json  [new]
Cammomile
Member

Откуда:
Сообщений: 1212
А, тебе не парсить, а рисовать. Тогда вот эта статья

https://www.red-gate.com/simple-talk/sql/t-sql-programming/producing-json-documents-from-sql-server-queries-via-tsql/
7 дек 17, 19:00    [21016285]     Ответить | Цитировать Сообщить модератору
 Re: Формирование json  [new]
Term
Member

Откуда:
Сообщений: 284
Благодарю всех за ответы!
8 дек 17, 00:28    [21016922]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить