In der Oracle-Datenbank das JSON_OBJECT()
Funktion erstellt ein JSON-Objekt aus einer Folge von Schlüssel-Wert-Paaren oder einer Objekttypinstanz.
Syntax
Die Syntax lautet wie folgt:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] )
Wo:
[ KEY ] key_expr VALUE val_expr
gibt ein Eigenschafts-Schlüssel-Wert-Paar an.FORMAT JSON
gibt an, dass die Eingabezeichenfolge JSON ist und daher in der Ausgabe nicht in Anführungszeichen gesetzt wird.JSON_on_null_clause
gibt das zu verwendende Verhalten an, wennexpr
entspricht null (d. h. entweder Nullwerte in die Ausgabe aufnehmen oder nicht).JSON_returning_clause
gibt den Typ des Rückgabewerts an.STRICT
prüft, ob die Ausgabe der JSON-Generierungsfunktion korrektes JSON ist oder nicht. Schlägt die Prüfung fehl, wird ein Syntaxfehler ausgegeben.WITH UNIQUE KEYS
garantiert, dass generierte JSON-Objekte eindeutige Schlüssel haben.
Beispiel
Hier ist ein Beispiel, um zu demonstrieren, wie es funktioniert:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;
Ergebnis:
{"score":37}
Der KEY
part ist optional, daher führt Folgendes zum gleichen Ergebnis:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;
Ergebnis:
{"score":37}
Mehrere Schlüssel/Wert-Paare
Hier ist ein Beispiel mit mehreren Schlüssel/Wert-Paaren:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL;
Ergebnis:
{"fname":"Homer","lname":"Escobar","score":237}
Verschachteltes JSON
Wenn einer der übergebenen Werte JSON enthält, können Sie FORMAT JSON
verwenden -Argument, um anzugeben, dass es JSON enthält und in der Ausgabe nicht in Anführungszeichen gesetzt werden soll.
Beispiel:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
Ergebnis:
{"details":{"name": "Peter", "score": 64}}
Folgendes passiert, wenn wir FORMAT JSON
entfernen Teil:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
Ergebnis:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
Datenbankbeispiel
Angenommen, wir führen die folgende Abfrage aus:
SELECT *
FROM regions;
Ergebnis:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Hier ist die gleiche Abfrage, aber mit den ausgewählten Spalten, die an JSON_OBJECT()
übergeben werden Funktion:
SELECT JSON_OBJECT(*)
FROM regions;
Ergebnis:
{"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"}
Und hier ist es mit nur einer Spalte, die an die Funktion übergeben wird:
SELECT JSON_OBJECT(region_name)
FROM regions;
Ergebnis:
{"region_name":"Europe"} {"region_name":"Americas"} {"region_name":"Asia"} {"region_name":"Middle East and Africa"}
Eine ausführlichere Erklärung dieser Funktion finden Sie in der Dokumentation von Oracle.