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_expr
określa parę klucz-wartość właściwości.FORMAT JSON
wskazuje, że ciąg wejściowy to JSON i dlatego nie będzie cytowany w danych wyjściowych.JSON_on_null_clause
określa zachowanie do użycia, gdyexpr
równa się null (tzn. albo dołącz wartości null do danych wyjściowych, albo nie).JSON_returning_clause
określa typ zwracanej wartości.STRICT
sprawdza, 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 KEYS
gwarantuje, ż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.