Microsoft SQL Server
VOOR JSON
Zoeken…
VOOR JSON PATH
Maakt resultaten van SELECT-query op als JSON-tekst. De clausule FOR JSON PATH wordt toegevoegd na de zoekopdracht:
SELECT top 3 object_id, name, type, principal_id FROM sys.objects
FOR JSON PATH
Kolomnamen worden gebruikt als sleutels in JSON en celwaarden worden gegenereerd als JSON-waarden. Het resultaat van de zoekopdracht is een reeks JSON-objecten:
[
{"object_id":3,"name":"sysrscols","type":"S "},
{"object_id":5,"name":"sysrowsets","type":"S "},
{"object_id":6,"name":"sysclones","type":"S "}
]
NULL-waarden in de kolom principal_id worden genegeerd (ze worden niet gegenereerd).
VOOR JSON PATH met kolomaliassen
VOOR JSON PATH stelt u in staat om het formaat van de output JSON te regelen met behulp van kolomaliassen:
SELECT top 3 object_id as id, name as [data.name], type as [data.type]
FROM sys.objects
FOR JSON PATH
Kolomalias wordt gebruikt als sleutelnaam. Punt-gescheiden kolomaliassen (data.name en data.type) worden gegenereerd als geneste objecten. Als twee kolommen hetzelfde voorvoegsel hebben in puntnotatie, worden ze gegroepeerd in één object (gegevens in dit voorbeeld):
[
{"id":3,"data":{"name":"sysrscols","type":"S "}},
{"id":5,"data":{"name":"sysrowsets","type":"S "}},
{"id":6,"data":{"name":"sysclones","type":"S "}}
]
VOOR JSON-clausule zonder array-wrapper (één object in uitvoer)
Met de optie WITHOUT_ARRAY_WRAPPER kunt u een enkel object in plaats van de array genereren. Gebruik deze optie als u weet dat u een enkele rij / object retourneert:
SELECT top 3 object_id, name, type, principal_id
FROM sys.objects
WHERE object_id = 3
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
In dit geval wordt één object geretourneerd:
{"object_id":3,"name":"sysrscols","type":"S "}
INCLUDE_NULL_VALUES
De clausule FOR JSON negeert NULL-waarden in cellen. Als u "sleutel" wilt genereren: nulparen voor cellen die NULL-waarden bevatten, voegt u de optie INCLUDE_NULL_VALUES toe aan de query:
SELECT top 3 object_id, name, type, principal_id
FROM sys.objects
FOR JSON PATH, INCLUDE_NULL_VALUES
NULL-waarden in de kolom principal_id worden gegenereerd:
[
{"object_id":3,"name":"sysrscols","type":"S ","principal_id":null},
{"object_id":5,"name":"sysrowsets","type":"S ","principal_id":null},
{"object_id":6,"name":"sysclones","type":"S ","principal_id":null}
]
Resultaten verpakken met ROOT-object
Wraps retourneert JSON-array in extra root-object met opgegeven sleutel:
SELECT top 3 object_id, name, type FROM sys.objects
FOR JSON PATH, ROOT('data')
Het resultaat van de zoekopdracht is een reeks JSON-objecten in het wrapperobject:
{
"data":[
{"object_id":3,"name":"sysrscols","type":"S "},
{"object_id":5,"name":"sysrowsets","type":"S "},
{"object_id":6,"name":"sysclones","type":"S "}
]
}
VOOR JSON AUTO
Nesten automatisch waarden uit de tweede tabel als een geneste sub-array van JSON-objecten:
SELECT top 5 o.object_id, o.name, c.column_id, c.name
FROM sys.objects o
JOIN sys.columns c ON o.object_id = c.object_id
FOR JSON AUTO
Het resultaat van de zoekopdracht is een reeks JSON-objecten:
[
{
"object_id":3,
"name":"sysrscols",
"c":[
{"column_id":12,"name":"bitpos"},
{"column_id":6,"name":"cid"}
]
},
{
"object_id":5,
"name":"sysrowsets",
"c":[
{"column_id":13,"name":"colguid"},
{"column_id":3,"name":"hbcolid"},
{"column_id":8,"name":"maxinrowlen"}
]
}
]
Aangepaste geneste JSON-structuur maken
Als u een complexe JSON-structuur nodig hebt die niet kan worden gemaakt met FOR JSON PATH of FOR JSON AUTO, kunt u uw JSON-uitvoer aanpassen door FOR JSON-subquery's als kolomuitdrukkingen te plaatsen:
SELECT top 5 o.object_id, o.name,
(SELECT column_id, c.name
FROM sys.columns c WHERE o.object_id = c.object_id
FOR JSON PATH) as columns,
(SELECT parameter_id, name
FROM sys.parameters p WHERE o.object_id = p.object_id
FOR JSON PATH) as parameters
FROM sys.objects o
FOR JSON PATH
Elke subquery levert een JSON-resultaat op dat wordt opgenomen in de hoofd JSON-inhoud.