[英]Parse JSON Array of arrays to SQL table
我有一個來自 API 的 JSON 響應,如下所示:
{
"series":[
{
"series_id": "SER_ID_1",
"data": [
["20200101",
1.0
],
["20200102",
1.9
],
["20200103",
4.5
]
]
},
{
"series_id": "SER_ID_2",
"data": [
["20200101",
6.0
],
["20200102",
8.9
],
["20200103",
1.5
]
]
}
]
}
可以有N series
, data
可以有N
值。
我想用 SQL 解析這個 JSON,以便得到以下結果:
series_id date value
SER_ID_1 20200101. 1.0
SER_ID_1 20200102. 1.9
SER_ID_1 20200103. 4.5
SER_ID_2 20200101. 6.0
SER_ID_2 20200102. 8.9
SER_ID_2 20200103. 1.5
請提供 SQL 服務器查詢以在解析 JSON 時獲得所需的結果。
提前致謝。
您需要使用OPENJSON()
使用適當的顯式模式解析輸入 JSON 兩次。 當然,您需要 SQL Server 2016+ 才能使用內置的 JSON 支持。
JSON:
DECLARE @json nvarchar(max) = N'
{
"series":[
{
"series_id": "SER_ID_1",
"data": [["20200101", 1.0], ["20200102", 1.9], ["20200103", 4.5]]
},
{
"series_id": "SER_ID_2",
"data": [["20200101", 6.0], ["20200102", 8.9], ["20200103", 1.5]]
}
]
}'
陳述:
SELECT j1.series_id, j2.[date], j2.[value]
FROM OPENJSON(@json, '$.series') WITH (
series_id varchar(10) '$.series_id',
data nvarchar(max) '$.data' AS JSON
) j1
OUTER APPLY OPENJSON(j1.data) WITH (
[date] date '$[0]',
[value] numeric(5, 1) '$[1]'
) j2
結果:
series_id date value
SER_ID_1 2020-01-01 1.0
SER_ID_1 2020-01-02 1.9
SER_ID_1 2020-01-03 4.5
SER_ID_2 2020-01-01 6.0
SER_ID_2 2020-01-02 8.9
SER_ID_2 2020-01-03 1.5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.