Delen via


Queryresultaten opmaken als JSON met FOR JSON

Van toepassing op: SQL Server 2016 (13.x) en latere versies Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (alleen serverloze SQL-pool)SQL Analytics-eindpunt in Microsoft FabricWarehouse in Microsoft FabricSQL-database in Microsoft Fabric Preview

Maak queryresultaten op als JSON of exporteer gegevens uit SQL Server als JSON door de FOR JSON component toe te voegen aan een SELECT instructie. Gebruik de component FOR JSON om clienttoepassingen te vereenvoudigen door de opmaak van JSON-uitvoer van de app naar SQL Server te delegeren.

Note

Azure Data Studio- is de aanbevolen query-editor voor JSON-query's omdat deze de JSON-resultaten automatisch opmaakt, zoals wordt weergegeven in dit artikel. SQL Server Management Studio geeft een niet-opgemaakte tekenreeks weer.

In Fabric Data Warehouse moet FOR JSON de laatste operator in de query zijn en is dit dus niet toegestaan binnen subquery's.

Queryresultaten opmaken

Wanneer u de FOR JSON-component gebruikt, kunt u de structuur van de JSON-uitvoer expliciet opgeven of de structuur van de SELECT-instructie de uitvoer laten bepalen.

  • Gebruik FOR JSON PATHom de volledige controle over de indeling van de JSON-uitvoer te behouden. U kunt wrapperobjecten maken en complexe eigenschappen nesten.

  • Als u de JSON-uitvoer automatisch wilt opmaken op basis van de structuur van de SELECT-instructie, gebruikt u FOR JSON AUTO.

Hier volgt een voorbeeld van een SELECT-uitspraak met de FOR JSON-clausule en de uitvoer ervan.

diagram waarin wordt getoond hoe FOR JSON werkt.

Uitvoer beheren met FOR JSON PATH

In PATH-modus kunt u de puntsyntaxis - bijvoorbeeld, Item.Price - gebruiken om geneste uitvoer op te maken.

Hier volgt een voorbeeldquery die gebruikmaakt van PATH-modus met de FOR JSON-component. In het volgende voorbeeld wordt ook de optie ROOT gebruikt om een benoemd hoofdelement op te geven.

diagram van stroom van FOR JSON-uitvoer.

Meer informatie over FOR JSON PATH

Zie Geneste JSON-uitvoer opmaken met PATH-modus voor meer gedetailleerde informatie en voorbeelden.

Zie SELECT - FOR-component (Transact-SQL)voor syntaxis en gebruik.

Andere JSON-uitvoeropties beheren

Beheer de uitvoer van de FOR JSON-component met behulp van de volgende extra opties.

  • ROOT

    Als u één element op het hoogste niveau wilt toevoegen aan de JSON-uitvoer, geeft u de optie ROOT op. Als u deze optie niet opgeeft, heeft de JSON-uitvoer geen hoofdelement. Zie Een hoofdknooppunt toevoegen aan JSON-uitvoer met de ROOT-optie voor meer informatie.

  • INCLUDE_NULL_VALUES

    Als u null-waarden wilt opnemen in de JSON-uitvoer, geeft u de optie INCLUDE_NULL_VALUES op. Als u deze optie niet opgeeft, bevat de uitvoer geen JSON-eigenschappen voor NULL waarden in de queryresultaten. Zie Null-waarden opnemen in JSON - INCLUDE_NULL_VALUES Optionvoor meer informatie.

  • WITHOUT_ARRAY_WRAPPER

    Als u de vierkante haken tussen de JSON-uitvoer van de FOR JSON-component standaard wilt verwijderen, geeft u de optie WITHOUT_ARRAY_WRAPPER op. Gebruik deze optie om één JSON-object te genereren als uitvoer van een resultaat met één rij. Als u deze optie niet opgeeft, wordt de JSON-uitvoer opgemaakt als een matrix. Dat wil gezegd, de uitvoer wordt tussen vierkante haken geplaatst. Zie Vierkante haken verwijderen uit JSON - WITHOUT_ARRAY_WRAPPER Optionvoor meer informatie.

Uitvoer van de FOR JSON-clausule

De uitvoer van de FOR JSON clausule heeft de volgende kenmerken:

  1. De resultatenset bevat één kolom.

    • Een kleine resultatenset kan één rij bevatten.
    • Een grote resultatenset splitst de lange JSON-tekenreeks over meerdere rijen.
      • Sql Server Management Studio (SSMS) voegt standaard de resultaten samen in één rij wanneer de uitvoerinstelling is Resultaten naar Raster. Op de SSMS-statusbalk wordt het werkelijke aantal rijen weergegeven.

      • Voor andere clienttoepassingen is mogelijk code vereist om lange resultaten opnieuw samen te voegen in één geldige JSON-tekenreeks door de inhoud van meerdere rijen samen te voegen. Zie Use FOR JSON-uitvoer in een C#-client-appvoor een voorbeeld van deze code in een C#-toepassing.

        schermafbeelding van de uitvoer van FOR JSON in SQL Server Management Studio.

  2. De resultaten worden opgemaakt als een matrix van JSON-objecten.

    • Het aantal elementen in de JSON-matrix is gelijk aan het aantal rijen in de resultaten van de SELECT-instructie (voordat de FOR JSON-component wordt toegepast).

    • Elke rij in de resultaten van de SELECT-instructie (voordat de FOR JSON-component wordt toegepast) wordt een afzonderlijk JSON-object in de matrix.

    • Elke kolom in de resultaten van de SELECT-instructie (voordat de FOR JSON-component wordt toegepast) wordt een eigenschap van het JSON-object.

  3. Zowel de namen van kolommen als hun waarden worden geëscaped volgens deze JSON-syntaxis. Zie How FOR JSON escapes voor speciale tekens en besturingstekens voor meer informatie.

Example

Hier volgt een voorbeeld van hoe de FOR JSON-component de JSON-uitvoer opmaakt.

Queryresultaten

A B C D
10 11 12 X
20 21 22 Y
30 31 32 Z

JSON-uitvoer

[{
    "A": 10,
    "B": 11,
    "C": 12,
    "D": "X"
}, {
    "A": 20,
    "B": 21,
    "C": 22,
    "D": "Y"
}, {
    "A": 30,
    "B": 31,
    "C": 32,
    "D": "Z"
}]