W bazie danych Oracle JSON_OBJECT() funkcja tworzy obiekt JSON z sekwencji par klucz-wartość lub jednej instancji typu obiektu.
Składnia
Składnia wygląda tak:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] ) Gdzie:
[ KEY ] key_expr VALUE val_exprokreśla parę klucz-wartość właściwości.FORMAT JSONwskazuje, że ciąg wejściowy to JSON i dlatego nie będzie cytowany w danych wyjściowych.JSON_on_null_clauseokreśla zachowanie do użycia, gdyexprrówna się null (tzn. albo dołącz wartości null do danych wyjściowych, albo nie).JSON_returning_clauseokreśla typ zwracanej wartości.STRICTsprawdza, czy dane wyjściowe funkcji generowania JSON są poprawne w formacie JSON. Jeśli sprawdzenie się nie powiedzie, zgłaszany jest błąd składni.WITH UNIQUE KEYSgwarantuje, że wygenerowane obiekty JSON mają unikalne klucze.
Przykład
Oto przykład pokazujący, jak to działa:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL; Wynik:
{"score":37}
KEY część jest opcjonalna, więc następujące daje ten sam wynik:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL; Wynik:
{"score":37} Wiele par klucz/wartość
Oto przykład z wieloma parami klucz/wartość:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL; Wynik:
{"fname":"Homer","lname":"Escobar","score":237} Zagnieżdżony JSON
Jeśli jedna z przekazywanych wartości zawiera JSON, możesz użyć FORMAT JSON argument, aby określić, że zawiera JSON i nie powinien być cytowany w danych wyjściowych.
Przykład:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL; Wynik:
{"details":{"name": "Peter", "score": 64}}
Oto, co się stanie, jeśli usuniemy FORMAT JSON część:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL; Wynik:
{"details":"{\"name\": \"Peter\", \"score\": 64}"} Przykład bazy danych
Załóżmy, że uruchamiamy następujące zapytanie:
SELECT *
FROM regions; Wynik:
REGION_ID REGION_NAME
____________ _________________________
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
Oto to samo zapytanie, ale z wybranymi kolumnami przekazanymi do JSON_OBJECT() funkcja:
SELECT JSON_OBJECT(*)
FROM regions; Wynik:
{"REGION_ID":1,"REGION_NAME":"Europe"}
{"REGION_ID":2,"REGION_NAME":"Americas"}
{"REGION_ID":3,"REGION_NAME":"Asia"}
{"REGION_ID":4,"REGION_NAME":"Middle East and Africa"} I tutaj jest tylko jedna kolumna przekazana do funkcji:
SELECT JSON_OBJECT(region_name)
FROM regions; Wynik:
{"region_name":"Europe"}
{"region_name":"Americas"}
{"region_name":"Asia"}
{"region_name":"Middle East and Africa"} Zobacz dokumentację Oracle, aby uzyskać bardziej szczegółowe wyjaśnienie tej funkcji.