Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics (endast serverlös SQL-pool)
SQL-analysslutpunkt i Microsoft Fabric
Warehouse i Microsoft Fabric
Formatera frågeresultat som JSON eller exportera data från SQL Server som JSON genom att lägga till FOR JSON
-satsen i en SELECT
-instruktion. Använd FOR JSON
-satsen för att förenkla klientprogram genom att delegera formateringen av JSON-utdata från appen till SQL Server.
Anteckning
Azure Data Studio är den rekommenderade frågeredigeraren för JSON-frågor eftersom det automatiskt formaterar JSON-resultaten enligt den här artikeln. SQL Server Management Studio visar en oformaterad sträng.
I Fabric Data Warehouse måste FOR JSON
vara den sista operatorn i frågan och tillåts därför inte i underfrågor.
Formatera frågeresultat
När du använder FOR JSON
-satsen kan du uttryckligen ange strukturen för JSON-utdata eller låta strukturen för SELECT
-instruktionen fastställa utdata.
Om du vill behålla fullständig kontroll över JSON-utdataformatet använder du
FOR JSON PATH
. Du kan skapa omslutningsobjekt och inbädda komplexa egenskaper.Om du vill formatera JSON-utdata automatiskt baserat på strukturen för
SELECT
-instruktionen använder duFOR JSON AUTO
.
Här är ett exempel på en SELECT
-instruktion med FOR JSON
-satsen och dess resultat.
Kontrollera utdata med FOR JSON PATH
I PATH
läge kan du använda punktsyntaxen – till exempel Item.Price
– för att formatera kapslade utdata.
Här är en exempelfråga som använder PATH
-läget med FOR JSON
-satsen. I följande exempel används också alternativet ROOT
för att ange ett namngivet rotelement.
Mer information om FOR JSON PATH
Mer detaljerad information och exempel finns i Formatera kapslade JSON-utdata med PATH-läge.
Syntax och användning finns i SELECT – FOR Clause (Transact-SQL).
Kontrollera andra JSON-utdataalternativ
Kontrollera utdata för FOR JSON
-satsen med hjälp av följande extra alternativ.
ROOT
Om du vill lägga till ett enda element på den översta nivån i JSON-utdata anger du alternativet
ROOT
. Om du inte anger det här alternativet har JSON-utdata inte något rotelement. Mer information finns i Lägg till en rotnod i JSON-utdata med ROOT-alternativet (SQL Server).INCLUDE_NULL_VALUES
Om du vill inkludera null-värden i JSON-utdata anger du alternativet
INCLUDE_NULL_VALUES
. Om du inte anger det här alternativet innehåller inte utdata JSON-egenskaper förNULL
värden i frågeresultatet. Mer information finns i Include Null Values in JSON – INCLUDE_NULL_VALUES Option.WITHOUT_ARRAY_WRAPPER
Om du vill ta bort hakparenteserna som omger JSON-utdata för
FOR JSON
-satsen som standard anger du alternativetWITHOUT_ARRAY_WRAPPER
. Använd det här alternativet om du vill generera ett enda JSON-objekt som utdata från ett resultat på en rad. Om du inte anger det här alternativet formateras JSON-utdata som en matris, dvs. utdata omges av hakparenteser. För mer information, se Ta bort hakparenteser från JSON – inställningen WITHOUT_ARRAY_WRAPPER.
Utdata från FOR JSON-satsen
Utdata från FOR JSON
-satsen har följande egenskaper:
Resultatuppsättningen innehåller en enda kolumn.
- En liten resultatuppsättning kan innehålla en enda rad.
- En stor resultatuppsättning delar upp den långa JSON-strängen över flera rader.
Som standard sammanfogar SQL Server Management Studio (SSMS) resultatet till en enda rad när utdatainställningen är Results to Grid. SSMS-statusfältet visar det faktiska radantalet.
Andra klientprogram kan kräva kod för att kombinera långa resultat till en enda giltig JSON-sträng genom att sammanfoga innehållet i flera rader. Ett exempel på den här koden i ett C#-program finns i Använda FÖR JSON-utdata i en C#-klientapp.
Resultatet formateras som en matris med JSON-objekt.
Antalet element i JSON-matrisen är lika med antalet rader i resultatet av SELECT-instruktionen (innan FOR JSON-satsen tillämpas).
Varje rad i resultatet av SELECT-instruktionen (innan FOR JSON-satsen tillämpas) blir ett separat JSON-objekt i matrisen.
Varje kolumn i resultatet av SELECT-instruktionen (innan FOR JSON-satsen tillämpas) blir en egenskap för JSON-objektet.
Både namnen på kolumnerna och deras värden är undantagna enligt JSON-syntaxen. Mer information finns i Hur FOR JSON hanterar specialtecken och styrtecken (SQL Server).
Exempel
Här är ett exempel som visar hur FOR JSON
-satsen formaterar JSON-utdata.
Frågeresultat
A | B | C | D |
---|---|---|---|
10 | 11 | 12 | X |
20 | 21 | 22 | Y |
30 | 31 | 32 | Z |
JSON-utdata
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]
Relaterat innehåll
- Hur FÖR JSON konverterar SQL Server-datatyper till JSON-datatyper (SQL Server)
- Hur FOR JSON flyr specialtecken och kontrolltecken (SQL Server)
- Video: JSON som en brygga mellan NoSQL och relationsvärldar
- SELECT – FOR-klausul (Transact-SQL)
- Använd FOR JSON-utdata i SQL Server och i klientappar (SQL Server)