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_expr
určuje pár klíč–hodnota vlastnosti.FORMAT JSON
označuje, že vstupní řetězec je JSON, a proto nebude na výstupu uveden v uvozovkách.JSON_on_null_clause
určuje chování, které se má použít, kdyžexpr
rovná se null (tj. buď zahrnout hodnoty null do výstupu, nebo ne).JSON_returning_clause
určuje typ návratové hodnoty.STRICT
zkontroluje, zda výstup funkce generování JSON je správný JSON. Pokud kontrola selže, dojde k chybě syntaxe.WITH UNIQUE KEYS
zaruč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.