Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Managed Instance
Azure Synapse Analytics (tylko bezserwerowa pula SQL)
punktu końcowego analizy SQL w usłudze Microsoft Fabric
Warehouse w usłudze 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.
Notatka
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.
ROOT
Aby 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 (SQL Server).INCLUDE_NULL_VALUES
Aby 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 dlaNULL
wartoś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_WRAPPER
Aby usunąć nawiasy kwadratowe otaczające dane wyjściowe JSON klauzuli
FOR JSON
domyś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 Jak FOR JSON ucieka znaki specjalne i kontrolne (SQL Server).
Przykład
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"
}]
Powiązana zawartość
- Jak funkcja JSON konwertuje typy danych programu SQL Server na typy danych JSON (SQL Server)
- Jak FOR JSON eskaluje znaki specjalne i znaki kontrolne (SQL Server)
- Wideo: JSON jako most między światami NoSQL i relacyjnymi
- SELECT — KLAUZULA FOR (Transact-SQL)
- Użyj danych wyjściowych FOR JSON w programie SQL Server i w aplikacjach klienckich (SQL Server)