I Oracle Database, JSON_OBJECT()
funktionen skapar ett JSON-objekt från en sekvens av nyckel-värdepar eller en objekttypsinstans.
Syntax
Syntaxen ser ut så här:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] )
Var:
[ KEY ] key_expr VALUE val_expr
anger ett egenskapsnyckel-värdepar.FORMAT JSON
indikerar att indatasträngen är JSON och kommer därför inte att citeras i utdata.JSON_on_null_clause
anger beteendet som ska användas närexpr
är lika med null (dvs. inkluderar antingen nollvärden i utdata eller inte).JSON_returning_clause
anger typen av returvärde.STRICT
kontrollerar om utdata från JSON-genereringsfunktionen är korrekt JSON. Om kontrollen misslyckas uppstår ett syntaxfel.WITH UNIQUE KEYS
garanterar att genererade JSON-objekt har unika nycklar.
Exempel
Här är ett exempel för att visa hur det fungerar:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;
Resultat:
{"score":37}
KEY
del är valfri, så följande ger samma resultat:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;
Resultat:
{"score":37}
Flera nyckel-/värdepar
Här är ett exempel med flera nyckel/värdepar:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL;
Resultat:
{"fname":"Homer","lname":"Escobar","score":237}
Inkapslade JSON
Om ett av värdena du skickar innehåller JSON kan du använda FORMAT JSON
argument för att ange att den innehåller JSON och inte bör citeras i utdata.
Exempel:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
Resultat:
{"details":{"name": "Peter", "score": 64}}
Här är vad som händer om vi tar bort FORMAT JSON
del:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
Resultat:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
Databasexempel
Anta att vi kör följande fråga:
SELECT *
FROM regions;
Resultat:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Här är samma fråga, men med de valda kolumnerna skickade till 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"}
Och här är den med bara en kolumn som skickas till 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 för en mer detaljerad förklaring av denna funktion.