In Oracle Database, de JSON_OBJECT()
functie maakt een JSON-object van een reeks sleutel-waardeparen of één objecttype-instantie.
Syntaxis
De syntaxis gaat als volgt:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] )
Waar:
[ KEY ] key_expr VALUE val_expr
specificeert een sleutel/waarde-paar van een eigenschap.FORMAT JSON
geeft aan dat de invoerreeks JSON is en daarom niet in de uitvoer wordt geciteerd.JSON_on_null_clause
specificeert het gedrag dat moet worden gebruikt wanneerexpr
is gelijk aan null (d.w.z. neem null-waarden op in de uitvoer of niet).JSON_returning_clause
specificeert het type retourwaarde.STRICT
controleert of de uitvoer van de JSON-generatiefunctie de juiste JSON is. Als de controle mislukt, wordt er een syntaxisfout gegenereerd.WITH UNIQUE KEYS
garandeert dat gegenereerde JSON-objecten unieke sleutels hebben.
Voorbeeld
Hier is een voorbeeld om te laten zien hoe het werkt:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;
Resultaat:
{"score":37}
De KEY
deel is optioneel, dus met het volgende wordt hetzelfde resultaat bereikt:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;
Resultaat:
{"score":37}
Meerdere sleutel/waarde-paren
Hier is een voorbeeld met meerdere sleutel/waarde-paren:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL;
Resultaat:
{"fname":"Homer","lname":"Escobar","score":237}
Geneste JSON
Als een van de waarden die u doorgeeft JSON bevat, kunt u de FORMAT JSON
. gebruiken argument om aan te geven dat het JSON bevat en niet in de uitvoer mag worden aangehaald.
Voorbeeld:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
Resultaat:
{"details":{"name": "Peter", "score": 64}}
Dit gebeurt er als we de FORMAT JSON
verwijderen deel:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
Resultaat:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
Databasevoorbeeld
Stel dat we de volgende query uitvoeren:
SELECT *
FROM regions;
Resultaat:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Hier is dezelfde zoekopdracht, maar met de geselecteerde kolommen doorgegeven aan de JSON_OBJECT()
functie:
SELECT JSON_OBJECT(*)
FROM regions;
Resultaat:
{"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"}
En hier is het met slechts één kolom doorgegeven aan de functie:
SELECT JSON_OBJECT(region_name)
FROM regions;
Resultaat:
{"region_name":"Europe"} {"region_name":"Americas"} {"region_name":"Asia"} {"region_name":"Middle East and Africa"}
Zie de documentatie van Oracle voor een meer gedetailleerde uitleg van deze functie.