ДЛЯ JSON в SQL Server 2016 - PullRequest
       10

ДЛЯ JSON в SQL Server 2016

0 голосов
/ 16 октября 2018

Можно ли как-нибудь вернуть данные JSON в указанном ниже формате, используя FOR JSON в SQL Server 2016?

 { 
     "draw": 1, 
     "recordsTotal": 57, 
     "recordsFiltered": 57, 
     "data": 
     [ 
         {
         "first_name": "Airi", 
         "last_name": "Satou", 
         "position": "Accountant",
         "office": "Tokyo", 
         "start_date": "28th Nov 08", 
         "salary": "$162,700" 
         } 
     ]
 }

Попробовал следующий запрос.Но не получается желаемый вывод -

SELECT
    1 AS draw
    ,100 AS recordsTotal
    ,10 AS recordsFiltered
,(SELECT 
    first_name
    ,last_name
    ,position
    ,office
    ,start_date
    ,salary
FROM Employees
FOR JSON PATH,ROOT('Employees'),INCLUDE_NULL_VALUES)

Приведенный ниже запрос дает вывод правильно, но не может добавить столбцы "draw", "recordsFiltered" и "totalRows" в JSON -

SELECT 
        first_name
        ,last_name
        ,position
        ,office
        ,start_date
        ,salary
    FROM Employees
    FOR JSON PATH,ROOT('Employees'),INCLUDE_NULL_VALUES

1 Ответ

0 голосов
/ 16 октября 2018

это должно совпадать с sys.objects в качестве источника фиктивной таблицы (кстати: всегда старайтесь создать рабочий автономный пример, либо предоставляя таблицу с некоторыми данными, либо используя некоторые общиесистемная таблица, которую может использовать каждый)

SELECT
     1 AS draw
    ,100 AS recordsTotal
    ,10 AS recordsFiltered
,(
    SELECT TOP 3
     o.object_id
    ,o.name
    FROM sys.objects o
    FOR JSON PATH,INCLUDE_NULL_VALUES
  ) AS [data]
FOR JSON PATH;

Внутренняя SELECT создаст массив объектов и назовет его "data".Внешний SELECT соберет все это вместе.

Результат

[  
   {  
      "draw":1,
      "recordsTotal":100,
      "recordsFiltered":10,
      "data":[  
         {  
            "object_id":3,
            "name":"sysrscols"
         },
         {  
            "object_id":5,
            "name":"sysrowsets"
         },
         {  
            "object_id":6,
            "name":"sysclones"
         }
      ]
   }
]

Подсказка

Возможно, вы захотите прочитать о WITHOUT_ARRAY_WRAPPER , чтобыуправлять скобками массива ...

...