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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow