T-SQL 从 JSON 数组读取

T-SQL read from JSON Array

我有以下JSON

DECLARE @json NVARCHAR(max) = '
{
  "source": "one",
  "dataSetId":"a3d5-14fda14",
  "data": [
    {
      "FieldId": 10
    }
  ]
}
'

并且需要将值解析为 table。

我试过:

-- meta
SELECT *  
FROM OPENJSON(@json)  
  WITH ( source NVARCHAR(20)
        ,dataSetId NVARCHAR(50)
        ,FieldId INT '$.data.FieldId'
)

-- array
SELECT * 
FROM OPENJSON(@json, '$.data')
  WITH ( source NVARCHAR(20)
        ,dataSetId NVARCHAR(50)
        ,FieldId int '$.FieldId'
)

它可以获取 sourcedataSetId 列或获取 FieldId 列,但我仍然无法合并这两个解决方案,以解析非数组和数组数据.

SELECT 应该 return 一次查询中的所有数据。

这个问题有很多解法。其中之一是....

DECLARE @json NVARCHAR(max) = '
 {
   "source": "one",
   "dataSetId":"a3d5-14fda14",
   "data": [
    {
      "FieldId": 10
    }
  ]
}'

SELECT  A.* , B.*  
FROM OPENJSON(@json) 
  WITH ( source NVARCHAR(20)
        ,dataSetId NVARCHAR(50)) A ,  
 OPENJSON(@json, '$.data') 
  WITH (  FieldId int '$.FieldId') B