Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (csak szerver nélküli SQL pool)
SQL analytics endpoint a Microsoft Fabricban
Tárház a Microsoft Fabricban
Adatbázis a Microsoft Fabricban
A lekérdezési eredmények formázása JSON-ként, vagy adatok exportálása az SQL Serverből JSON-ként a FOR JSON záradék SELECT utasításhoz való hozzáadásával. Az FOR JSON záradék használatával egyszerűsítheti az ügyfélalkalmazásokat az alkalmazás JSON-kimenetének az SQL Serverre való delegálásával.
Note
Az Azure Data Studio a JSON-lekérdezések ajánlott lekérdezésszerkesztője, mert automatikusan formázja a JSON-eredményeket, ahogyan az ebben a cikkben látható. Az SQL Server Management Studio formázatlan sztringet jelenít meg.
A Fabric Data Warehouse-ban FOR JSON kell lennie a lekérdezés utolsó operátorának, ezért nem engedélyezett az al lekérdezésekben.
Lekérdezési eredmények formázása
A FOR JSON záradék használatakor explicit módon megadhatja a JSON-kimenet struktúráját, vagy engedélyezheti, hogy a SELECT utasítás szerkezete határozza meg a kimenetet.
A JSON-kimenet formátumának teljes vezérléséhez használja a
FOR JSON PATH. Burkolóobjektumokat hozhat létre, és összetett tulajdonságokat ágyazhat be.Ha a JSON-kimenetet a
SELECTutasítás struktúrája alapján szeretné automatikusan formázni, használja aFOR JSON AUTO.
Íme egy példa egy SELECT utasításra a FOR JSON záradékkal és kimenetével.
Kimenet szabályozása a FOR JSON PATH használatával
PATH módban a pontszintaxis ( például Item.Price ) használatával formázhatja a beágyazott kimenetet.
Íme egy minta lekérdezés, amely PATH módot használ a FOR JSON záradékkal. Az alábbi példa a ROOT lehetőséget is használja egy elnevezett gyökérelem megadásához.
További információ a FOR JSON PATH-ról
Részletesebb információkért és példákért lásd: Beágyazott JSON-kimenet formázása PATH móddal.
A szintaxisról és a használatról lásd a SELECT - FOR kifejezést (Transact-SQL).
Egyéb JSON-kimeneti beállítások szabályozása
A FOR JSON záradék kimenetének szabályozása az alábbi további lehetőségek használatával.
ROOTHa egyetlen legfelső szintű elemet szeretne hozzáadni a JSON-kimenethez, adja meg a
ROOTbeállítást. Ha nem adja meg ezt a beállítást, a JSON-kimenetnek nincs gyökéreleme. További információért lásd A JSON-kimenethez való gyökércsomópont hozzáadását a ROOT beállítással.INCLUDE_NULL_VALUESHa null értékeket szeretne belefoglalni a JSON-kimenetbe, adja meg a
INCLUDE_NULL_VALUESbeállítást. Ha nem adja meg ezt a beállítást, a kimenet nem tartalmazzaNULLértékek JSON-tulajdonságait a lekérdezés eredményében. További információ: Null értékek belefoglalása a JSON-ban – INCLUDE_NULL_VALUES Beállítás.WITHOUT_ARRAY_WRAPPERHa alapértelmezés szerint el szeretné távolítani a
FOR JSONzáradék JSON-kimenetét körülvevő szögletes zárójeleket, adja meg aWITHOUT_ARRAY_WRAPPERbeállítást. Ezzel a beállítással egyetlen JSON-objektumot hozhat létre egy egysoros eredmény kimeneteként. Ha nem adja meg ezt a beállítást, a JSON-kimenet tömbként van formázva, vagyis a kimenet szögletes zárójelek közé van zárva. További információért lásd: Szögletes zárójelek eltávolítása a JSON-ból – WITHOUT_ARRAY_WRAPPER opció.
A FOR JSON záradék kimenete
A FOR JSON záradék kimenete a következő jellemzőkkel rendelkezik:
Az eredményhalmaz egyetlen oszlopot tartalmaz.
- A kis eredményhalmazok egyetlen sort tartalmazhatnak.
- Egy nagy eredményhalmaz több sorra osztja a hosszú JSON-sztringet.
Az SQL Server Management Studio (SSMS) alapértelmezés szerint egyetlen sorba fűzi az eredményeket, ha a kimeneti beállítás Eredmények rácsbavan beállítva. Az SSMS állapotsávja megjeleníti a tényleges sorok számát.
Más ügyfélalkalmazások esetében előfordulhat, hogy több sor tartalmának összefűzésével kódra van szükség a hosszú eredmények egyetlen érvényes JSON-sztringbe való újrakombinálásához. Egy C#-alkalmazás kódjára példa: JSON-kimenet használata C#-ügyfélalkalmazásban.
Az eredmények JSON-objektumok tömbjeként vannak formázva.
A JSON-tömb elemeinek száma megegyezik a SELECT utasítás eredményében szereplő sorok számával (a FOR JSON záradék alkalmazása előtt).
A SELECT utasítás eredményeinek minden sora (a FOR JSON záradék alkalmazása előtt) külön JSON-objektum lesz a tömbben.
A SELECT utasítás eredményeinek minden oszlopa (a FOR JSON záradék alkalmazása előtt) a JSON-objektum tulajdonságává válik.
Az oszlopok nevei és értékei a JSON-szintaxis szerint vannak elkerülve. További információért lásd: Hogyan fordítja el a FOR JSON a speciális és vezérlő karaktereket.
Example
Íme egy példa, amely bemutatja, hogy a FOR JSON záradék hogyan formázta a JSON-kimenetet.
Lekérdezési eredmények
| A | B | C | D |
|---|---|---|---|
| 10 | 11 | 12 | X |
| 20 | 21 | 22 | Y |
| 30 | 31 | 32 | Z |
JSON-kimenet
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]
Kapcsolódó tartalom
- Hogyan konvertálja a JSON az SQL Server-adattípusokat JSON-adattípusokká?
- Hogyan kezeli az FOR JSON a speciális és vezérlő karaktereket
- Videó: A JSON mint híd a NoSQL és a relációs világok között
- SELECT - FOR záradék (Transact-SQL)
- A FOR JSON-kimenet használata az SQL Database Engine-ben és az ügyfélalkalmazásokban