Megosztás a következőn keresztül:


Lekérdezési eredmények formázása JSON-ként a FOR JSON használatával

Vonatkozik a következőkre: SQL Server 2016 (13.x) és későbbi verziók Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics (csak szerver nélküli SQL pool)SQL analytics endpoint a Microsoft FabricbanTárház a Microsoft FabricbanAdatbá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 SELECT utasítás struktúrája alapján szeretné automatikusan formázni, használja a FOR JSON AUTO.

Íme egy példa egy SELECT utasításra a FOR JSON záradékkal és kimenetével.

A JSON működését bemutató diagram.

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.

FOR JSON-kimenet folyamatábra.

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.

  • ROOT

    Ha egyetlen legfelső szintű elemet szeretne hozzáadni a JSON-kimenethez, adja meg a ROOT beá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_VALUES

    Ha null értékeket szeretne belefoglalni a JSON-kimenetbe, adja meg a INCLUDE_NULL_VALUES beállítást. Ha nem adja meg ezt a beállítást, a kimenet nem tartalmazza NULL é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_WRAPPER

    Ha alapértelmezés szerint el szeretné távolítani a FOR JSON záradék JSON-kimenetét körülvevő szögletes zárójeleket, adja meg a WITHOUT_ARRAY_WRAPPER beá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:

  1. 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.

        Képernyőkép az SQL Server Management Studióban lévő FOR JSON-kimenetről.

  2. 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.

  3. 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"
}]