I Oracle Database er JSON_OBJECT()
funktion opretter et JSON-objekt ud fra en sekvens af nøgleværdi-par eller en objekttypeinstans.
Syntaks
Syntaksen ser sådan ud:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] )
Hvor:
[ KEY ] key_expr VALUE val_expr
angiver et egenskabsnøgle-værdi-par.FORMAT JSON
angiver, at inputstrengen er JSON, og vil derfor ikke blive citeret i outputtet.JSON_on_null_clause
angiver den adfærd, der skal bruges, nårexpr
svarer til null (dvs. inkludere enten null-værdier i output eller ikke).JSON_returning_clause
angiver typen af returværdi.STRICT
kontrollerer, om outputtet fra JSON-genereringsfunktionen er korrekt JSON. Hvis kontrollen mislykkes, opstår der en syntaksfejl.WITH UNIQUE KEYS
garanterer, at genererede JSON-objekter har unikke nøgler.
Eksempel
Her er et eksempel for at demonstrere, hvordan det virker:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;
Resultat:
{"score":37}
KEY
del er valgfri, så følgende opnår samme resultat:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;
Resultat:
{"score":37}
Flere nøgle-/værdipar
Her er et eksempel med flere nøgle/værdi-par:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL;
Resultat:
{"fname":"Homer","lname":"Escobar","score":237}
Indlejret JSON
Hvis en af de værdier, du sender, indeholder JSON, kan du bruge FORMAT JSON
argument for at angive, at det indeholder JSON og ikke bør citeres i outputtet.
Eksempel:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
Resultat:
{"details":{"name": "Peter", "score": 64}}
Her er, hvad der sker, hvis vi fjerner FORMAT JSON
del:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
Resultat:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
Databaseeksempel
Antag, at vi kører følgende forespørgsel:
SELECT *
FROM regions;
Resultat:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Her er den samme forespørgsel, men med de valgte kolonner videregivet til JSON_OBJECT()
funktion:
SELECT JSON_OBJECT(*)
FROM regions;
Resultat:
{"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"}
Og her er det med kun én kolonne videregivet til funktionen:
SELECT JSON_OBJECT(region_name)
FROM regions;
Resultat:
{"region_name":"Europe"} {"region_name":"Americas"} {"region_name":"Asia"} {"region_name":"Middle East and Africa"}
Se Oracles dokumentation for en mere detaljeret forklaring af denne funktion.