前言

Microsoft SQL Server 2016 版本開始對於 JSON 資料型態提供多種語法上的支援,在這一篇我們將簡單介紹與比較 FOR JSON AUTO 與 FOR JSON PATH 之間的差異。本篇文章若有錯誤或任何建議,請各位先進不令指教。

介紹

在介紹之前,我們先產生範例資料庫與資料,下面介紹時會比較清楚其 FOR JSON AUTO 與 FOR JSON PATH 作用:







FOR JSON AUTO
FRO JSON AUTO 語法可以用於 SELECT 語法中,它會將 Query 結果轉換成為 JSON 格式呈現,以下列語法為例,在結果區域可以看見資料呈現 JSON 格式:
SELECT [Id]
      ,[Name] AS 'Employee.Name'
      ,[Salary]
  FROM [test].[dbo].[Employee]
  FOR JSON AUTO





我們點選結果部分連結,可以看見完整的 JSON string
(使用 CTRL + D, CTRL + K 可以排版,但我操作時一直失敗,只好貼到json paser online 進行排版)








FOR JSON PATH
與 FOR JSON PATH 使用方法相同,可以用於 SELECT 語法內,將結果轉換成 JSON 格式呈現,我們透過下列語法進行測試:
SELECT [Id]
      ,[Name] AS 'Employee.Name'
      ,[Salary]
  FROM [test].[dbo].[Employee]
  FOR JSON PATH







差異比較
眼尖的朋友應該已經發現我們的 SELECT 語法中,我們將 Name 這個欄位另外命名成 Employee.Name ,而 FOR JSON AUTO 與 FOR JSON PATH 之間的差異在於命名中若有 此物件操作的命名方式, FOR JSON PATH 會進行解析後包裝一層 JSON OBJECT,而 FOR JSON AUTO 則不會。








參考資料