Hi all,
I am trying to read the following JSON code in SQL Server:
declare @json nvarchar(max)
set @json =
'
{
"WorkId":121,
"Code":"UK_AAT",
"UpdateAttributes":
{
"TriggerDateMapping":
{
"3N":"N/A",
"10N": "N/A"
},
"OverrideRules":
[
{"Busket Rule":"A1",
"Exit_Window": 15,
"Strategy": "STE Triggered",
"Start_Date": "Month 2"
},
{"Busket Rule":"C2",
"Exit_Window": 44,
"Strategy": "STE",
"Start_Date": "Month 2"
},
{"Busket Rule":"D1",
"Exit_Window": 128,
"Strategy": "Ignore",
"Start_Date": "Q2"
}
]
}
}
'
--select isjson(@json)
select *
from openjson(@json)
with (
WorkId int '$.WorkId',
[Busket Rule] varchar(200) '$.UpdateAttributes.OverrideRules[0]."Busket Rule"',
Exit_Window int '$.UpdateAttributes.OverrideRules[0].Exit_Window',
Startegy varchar(200) '$.UpdateAttributes.OverrideRules[0].Strategy',
Start_Date varchar(100) '$.UpdateAttributes.OverrideRules[0].Start_Date'
)
it reads correctly, but only for the 1st entry of array [index 0]. To reading all the rest, I have to manually change it to 1,2, and so on. How I can read it so it will look like table?
Thanks
You need multiple OPENJSON
functions.
select j.WorkId, r.[Busket Rule], r.Exit_Window, r.Startegy, r.Start_Date
from openjson(@json)
with (
WorkId int '$.WorkId',
OverrideRules NVARCHAR(MAX) '$.UpdateAttributes.OverrideRules' AS JSON
) j
CROSS APPLY OPENJSON(j.OverrideRules)
WITH (
[Busket Rule] varchar(200) '$."Busket Rule"',
Exit_Window int '$.Exit_Window',
Startegy varchar(200) '$.Strategy',
Start_Date varchar(100) '$.Start_Date'
) AS r
Drew
J. Drew Allen
Business Intelligence Analyst
Philadelphia, PA
April 2, 2024 at 6:58 pm
Thanks a lot, Drew.
It works as expected.
Viewing 3 posts - 1 through 3 (of 3 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy