Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) i nowsze wersje
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics (tylko bezserwerowa pula SQL)
Punkt końcowy analizy SQL w Microsoft Fabric
Magazyn w Microsoft Fabric
SQL Database w Microsoft Fabric
Formatuj wyniki zapytania jako dane JSON lub eksportuj dane z programu SQL Server jako kod JSON, dodając klauzulę FOR JSON do instrukcji SELECT. Użyj klauzuli FOR JSON, aby uprościć aplikacje klienckie, delegując formatowanie danych wyjściowych JSON z aplikacji do programu SQL Server.
Note
Azure Data Studio jest zalecanym edytorem zapytań JSON, ponieważ automatycznie formatuje wyniki JSON, jak pokazano w tym artykule. Program SQL Server Management Studio wyświetla niesformatowany ciąg.
W Fabric Data Warehouse FOR JSON musi być ostatnim operatorem w zapytaniu i dlatego nie jest dozwolony wewnątrz podzapytań.
Formatowanie wyników zapytania
Jeśli używasz klauzuli FOR JSON, możesz jawnie określić strukturę danych wyjściowych JSON lub pozwolić strukturze instrukcji SELECT określić dane wyjściowe.
Aby zachować pełną kontrolę nad formatem danych wyjściowych JSON, użyj
FOR JSON PATH. Można tworzyć obiekty opakowujące i zagnieżdżać właściwości złożone.Aby automatycznie sformatować dane wyjściowe JSON na podstawie struktury instrukcji
SELECT, użyjFOR JSON AUTO.
Oto przykład instrukcji SELECT z klauzulą FOR JSON i jej danymi wyjściowymi.
Sterowanie danymi wyjściowymi za pomocą ścieżki JSON FOR
W trybie PATH można użyć składni kropki — na przykład Item.Price — do formatowania zagnieżdżonych danych wyjściowych.
Oto przykładowe zapytanie, które używa trybu PATH z klauzulą FOR JSON. W poniższym przykładzie użyto również opcji ROOT, aby określić nazwany element główny.
Więcej informacji o FOR JSON PATH
Aby uzyskać bardziej szczegółowe informacje i przykłady, zobacz Format zagnieżdżone dane wyjściowe JSON z trybem "PATH".
Aby uzyskać informacje o składni i użyciu, zobacz SELECT — FOR Clause (Transact-SQL).
Kontrolowanie innych opcji danych wyjściowych JSON
Kontroluj dane wyjściowe klauzuli FOR JSON, korzystając z poniższych dodatkowych opcji.
ROOTAby dodać pojedynczy element najwyższego poziomu do danych wyjściowych JSON, określ opcję
ROOT. Jeśli nie określisz tej opcji, dane wyjściowe JSON nie mają elementu głównego. Aby uzyskać więcej informacji, zobacz Dodawanie węzła głównego do danych wyjściowych JSON przy użyciu opcji ROOT.INCLUDE_NULL_VALUESAby uwzględnić wartości null w danych wyjściowych JSON, określ opcję
INCLUDE_NULL_VALUES. Jeśli nie określisz tej opcji, dane wyjściowe nie zawierają właściwości JSON dlaNULLwartości w wynikach zapytania. Aby uzyskać więcej informacji, zobacz Include Null Values in JSON - INCLUDE_NULL_VALUES Option(Uwzględnij wartości null w formacie JSON — opcja INCLUDE_NULL_VALUES).WITHOUT_ARRAY_WRAPPERAby usunąć nawiasy kwadratowe otaczające dane wyjściowe JSON klauzuli
FOR JSONdomyślnie, określ opcjęWITHOUT_ARRAY_WRAPPER. Użyj tej opcji, aby wygenerować pojedynczy obiekt JSON jako dane wyjściowe z wyniku pojedynczego wiersza. Jeśli nie określisz tej opcji, dane wyjściowe JSON są formatowane jako tablica — czyli dane wyjściowe są ujęte w nawiasy kwadratowe. Aby uzyskać więcej informacji, zobacz Usuń nawiasy kwadratowe z formatu JSON — opcja WITHOUT_ARRAY_WRAPPER.
Dane wyjściowe klauzuli JSON FOR
Dane wyjściowe klauzuli FOR JSON mają następujące cechy:
Zestaw wyników zawiera jedną kolumnę.
- Mały zestaw wyników może zawierać jeden wiersz.
- Duży zestaw wyników dzieli długi ciąg JSON między wiele wierszy.
Domyślnie program SQL Server Management Studio (SSMS) łączy wyniki w jeden wiersz, gdy ustawienie danych wyjściowych ma wartość Wyniki do siatki. Pasek stanu programu SSMS wyświetla rzeczywistą liczbę wierszy.
Inne aplikacje klienckie mogą wymagać kodu, aby ponownie połączyć długie wyniki w jeden, prawidłowy ciąg JSON, łącząc zawartość wielu wierszy. Aby zapoznać się z przykładem tego kodu w aplikacji języka C#, zobacz Use FOR JSON output in a C# client app(Używanie danych wyjściowych FOR JSON w aplikacji klienckiej języka C#).
Wyniki są formatowane jako tablica obiektów JSON.
Liczba elementów w tablicy JSON jest równa liczbie wierszy w wynikach instrukcji SELECT (przed zastosowaniem klauzuli JSON FOR).
Każdy wiersz w wynikach instrukcji SELECT (przed zastosowaniem klauzuli JSON FOR) staje się oddzielnym obiektem JSON w tablicy.
Każda kolumna w wynikach instrukcji SELECT (przed zastosowaniem klauzuli JSON FOR) staje się właściwością obiektu JSON.
Zarówno nazwy kolumn, jak i ich wartości są odpowiednio kodowane zgodnie ze składnią JSON. Aby uzyskać więcej informacji, zobacz How FOR JSON escapes special characters and control characters (Jak w formacie JSON jest ucieczka znaków specjalnych i znaków kontrolnych).
Example
Oto przykład, który pokazuje, jak klauzula FOR JSON formatuje dane wyjściowe JSON.
Wyniki zapytania
| A | B | C | D |
|---|---|---|---|
| 10 | 11 | 12 | X |
| 20 | 21 | 22 | Y |
| 30 | 31 | 32 | Z |
Dane wyjściowe JSON
[{
"A": 10,
"B": 11,
"C": 12,
"D": "X"
}, {
"A": 20,
"B": 21,
"C": 22,
"D": "Y"
}, {
"A": 30,
"B": 31,
"C": 32,
"D": "Z"
}]
Treści powiązane
- Jak format JSON konwertuje typy danych programu SQL Server na typy danych JSON
- Jak JSON ucieka znaki specjalne i sterujące
- Wideo: JSON jako most między światami NoSQL i relacyjnymi
- SELECT — KLAUZULA FOR (Transact-SQL)
- Używanie danych wyjściowych FOR JSON w aparacie bazy danych SQL i w aplikacjach klienckich