В Oracle Database, JSON_OBJECT()
функцията създава JSON обект от поредица от двойки ключ-стойност или един екземпляр от тип обект.
Синтаксис
Синтаксисът е така:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] )
Къде:
[ KEY ] key_expr VALUE val_expr
определя двойка ключ-стойност на свойството.FORMAT JSON
показва, че входният низ е JSON и следователно няма да бъде в кавички в изхода.JSON_on_null_clause
определя поведението, което да се използва, когатоexpr
се равнява на null (т.е. или включва нулеви стойности в изхода, или не).JSON_returning_clause
определя типа на връщаната стойност.STRICT
проверява дали изходът на функцията за генериране на JSON е правилен JSON. Ако проверката не успее, се появява синтактична грешка.WITH UNIQUE KEYS
гарантира, че генерираните JSON обекти имат уникални ключове.
Пример
Ето пример, за да демонстрирате как работи:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;
Резултат:
{"score":37}
KEY
част не е задължителна, така че следното постига същия резултат:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;
Резултат:
{"score":37}
Множество двойки ключ/стойност
Ето пример с множество двойки ключ/стойност:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL;
Резултат:
{"fname":"Homer","lname":"Escobar","score":237}
Вложен JSON
Ако една от стойностите, които предавате, съдържа JSON, можете да използвате FORMAT JSON
аргумент, за да посочите, че съдържа JSON и не трябва да се цитира в изхода.
Пример:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
Резултат:
{"details":{"name": "Peter", "score": 64}}
Ето какво се случва, ако премахнем FORMAT JSON
част:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
Резултат:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
Пример за база данни
Да предположим, че изпълняваме следната заявка:
SELECT *
FROM regions;
Резултат:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Ето същата заявка, но с избраните колони, предадени на JSON_OBJECT()
функция:
SELECT JSON_OBJECT(*)
FROM regions;
Резултат:
{"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"}
И ето го само с една колона, предадена на функцията:
SELECT JSON_OBJECT(region_name)
FROM regions;
Резултат:
{"region_name":"Europe"} {"region_name":"Americas"} {"region_name":"Asia"} {"region_name":"Middle East and Africa"}
Вижте документацията на Oracle за по-подробно обяснение на тази функция.