Trong Cơ sở dữ liệu Oracle, JSON_OBJECT()
hàm tạo một đối tượng JSON từ một chuỗi các cặp khóa-giá trị hoặc một phiên bản kiểu đối tượng.
Cú pháp
Cú pháp như sau:
JSON_OBJECT
( [ [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
,]...
[ JSON_on_null_clause ] [ JSON_returning_clause ]
[ STRICT ]
[ WITH UNIQUE KEYS ] )
Ở đâu:
-
[ KEY ] key_expr VALUE val_expr
chỉ định một cặp khóa-giá trị thuộc tính. -
FORMAT JSON
cho biết rằng chuỗi đầu vào là JSON và do đó sẽ không được trích dẫn trong đầu ra. -
JSON_on_null_clause
chỉ định hành vi sẽ sử dụng khiexpr
tương đương với null (tức là bao gồm giá trị null trong đầu ra hoặc không). -
JSON_returning_clause
chỉ định loại giá trị trả về. -
STRICT
kiểm tra xem đầu ra của hàm tạo JSON có đúng là JSON hay không. Nếu kiểm tra không thành công, lỗi cú pháp sẽ xuất hiện. -
WITH UNIQUE KEYS
đảm bảo rằng các đối tượng JSON được tạo có khóa duy nhất.
Ví dụ
Dưới đây là một ví dụ để chứng minh cách nó hoạt động:
SELECT JSON_OBJECT(KEY 'score' VALUE 37) FROM DUAL;
Kết quả:
{"score":37}
KEY
phần là tùy chọn, vì vậy phần sau đạt được kết quả tương tự:
SELECT JSON_OBJECT('score' VALUE 37) FROM DUAL;
Kết quả:
{"score":37}
Nhiều cặp khóa / giá trị
Dưới đây là một ví dụ với nhiều cặp khóa / giá trị:
SELECT JSON_OBJECT(
KEY 'fname' VALUE 'Homer',
KEY 'lname' VALUE 'Escobar',
KEY 'score' VALUE 237
)
FROM DUAL;
Kết quả:
{"fname":"Homer","lname":"Escobar","score":237}
JSON lồng nhau
Nếu một trong các giá trị bạn chuyển có chứa JSON, bạn có thể sử dụng FORMAT JSON
để chỉ định rằng nó chứa JSON và không được trích dẫn trong đầu ra.
Ví dụ:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
FORMAT JSON
)
FROM DUAL;
Kết quả:
{"details":{"name": "Peter", "score": 64}}
Đây là những gì sẽ xảy ra nếu chúng tôi xóa FORMAT JSON
phần:
SELECT JSON_OBJECT(
KEY 'details'
VALUE '{"name": "Peter", "score": 64}'
)
FROM DUAL;
Kết quả:
{"details":"{\"name\": \"Peter\", \"score\": 64}"}
Ví dụ về cơ sở dữ liệu
Giả sử chúng ta chạy truy vấn sau:
SELECT *
FROM regions;
Kết quả:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Đây là cùng một truy vấn, nhưng với các cột đã chọn được chuyển đến JSON_OBJECT()
chức năng:
SELECT JSON_OBJECT(*)
FROM regions;
Kết quả:
{"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"}
Và đây là chỉ với một cột được truyền vào hàm:
SELECT JSON_OBJECT(region_name)
FROM regions;
Kết quả:
{"region_name":"Europe"} {"region_name":"Americas"} {"region_name":"Asia"} {"region_name":"Middle East and Africa"}
Xem tài liệu của Oracle để có giải thích chi tiết hơn về chức năng này.