[英]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.