V databázi Oracle je to JSON_OBJECT() funkce vytvoří objekt JSON ze sekvence párů klíč-hodnota nebo jedné instance typu objektu.
Syntaxe
Syntaxe vypadá takto:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] ) Kde:
[ KEY ] key_expr VALUE val_exprurčuje pár klíč–hodnota vlastnosti.FORMAT JSONoznačuje, že vstupní řetězec je JSON, a proto nebude na výstupu uveden v uvozovkách.JSON_on_null_clauseurčuje chování, které se má použít, kdyžexprrovná se null (tj. buď zahrnout hodnoty null do výstupu, nebo ne).JSON_returning_clauseurčuje typ návratové hodnoty.STRICTzkontroluje, zda výstup funkce generování JSON je správný JSON. Pokud kontrola selže, dojde k chybě syntaxe.WITH UNIQUE KEYSzaručuje, že generované objekty JSON mají jedinečné klíče.
Příklad
Zde je příklad demonstrující, jak to funguje:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL; Výsledek:
{"score":37}
KEY část je volitelná, takže následující dosáhne stejného výsledku:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL; Výsledek:
{"score":37} Více párů klíč/hodnota
Zde je příklad s několika páry klíč/hodnota:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL; Výsledek:
{"fname":"Homer","lname":"Escobar","score":237} Vnořený JSON
Pokud jedna z předávaných hodnot obsahuje JSON, můžete použít FORMAT JSON argument k určení, že obsahuje JSON a neměl by být ve výstupu citován.
Příklad:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL; Výsledek:
{"details":{"name": "Peter", "score": 64}}
Co se stane, když odstraníme FORMAT JSON část:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL; Výsledek:
{"details":"{\"name\": \"Peter\", \"score\": 64}"} Příklad databáze
Předpokládejme, že spustíme následující dotaz:
SELECT *
FROM regions; Výsledek:
REGION_ID REGION_NAME
____________ _________________________
1 Europe
2 Americas
3 Asia
4 Middle East and Africa
Zde je stejný dotaz, ale s vybranými sloupci předanými do JSON_OBJECT() funkce:
SELECT JSON_OBJECT(*)
FROM regions; Výsledek:
{"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"} A tady je to s jedním sloupcem předaným do funkce:
SELECT JSON_OBJECT(region_name)
FROM regions; Výsledek:
{"region_name":"Europe"}
{"region_name":"Americas"}
{"region_name":"Asia"}
{"region_name":"Middle East and Africa"} Podrobnější vysvětlení této funkce najdete v dokumentaci Oracle.