ORACLE JSON處理
DECLARE
P_CLOB CLOB :=
'{
"age":123
}';
V_JSON_IN JSON_OBJECT_T := JSON_OBJECT_T.PARSE(P_CLOB);
V_AGE_ID NUMBER := V_JSON_IN.GET_NUMBER('age');
BEGIN
dbms_output.put_line(V_AGE_ID);
END;

declare
P_CLOB CLOB;
-- 聲明一個json對象
V_JSON_OUT JSON_OBJECT_T := NEW JSON_OBJECT_T;
begin
--為這個json對象賦值
V_JSON_OUT.PUT('firstname', '王');
-- 獲取指定的key值
P_CLOB := V_JSON_OUT.GET_CLOB('firstname');
P_CLOB := V_JSON_OUT.GET_STRING('firstname');
-- 輸出
DBMS_OUTPUT.put_line(TO_CHAR(P_CLOB));
end;

JSON_ARRAY_T
DECLARE
-- 聲明字符串變量
p_json_str VARCHAR2(500);
--數組變量
p_json_list JSON_ARRAY_T;
-- json變量
p_json JSON_OBJECT_T;
p_name VARCHAR2(20);
p_age number;
BEGIN
p_json_str := '[
{"name": "lisi", "age": 30},
{"name":"zhangsan", "age": 20}
]';
-- 字符解析成json數組
p_json_list := JSON_ARRAY_T.parse(p_json_str);
-- 數組長度
DBMS_OUTPUT.PUT_LINE(p_json_list.get_size);
FOR i IN 0.. p_json_list.get_size - 1 LOOP
p_json := JSON_OBJECT_T(p_json_list.get(0));
p_name := p_json.get_string('name');
p_age := p_json.get_number('age');
dbms_output.put_line('name:'||p_name||';age:'||p_age);
END LOOP;
-- 添加數據
p_json := new JSON_OBJECT_T;
p_json.put('name', '王五');
p_json.put('age', 23);
p_json_list.append(p_json);
dbms_output.put_line(p_json_list.to_string());
-- 大文本
dbms_output.put_line(p_json_list.to_clob());
DBMS_OUTPUT.PUT_LINE(JSON_OBJECT_T(p_json_list.get(0)).get_number('age'));
END;

JSON_OBJECT_T和JSON_ARRRAY_T
declare
str varchar(4000) := '{"data": [{"cm_id":12}, {"cm_id":13}]}'; -- 參數
returnJson JSON_OBJECT_T; -- json 對象
store JSON_OBJECT_T; -- json對象
pudList JSON_ARRAY_T:= new JSON_ARRAY_T; -- 數組
begin
-- 解析json對象
returnJson := JSON_OBJECT_T.parse(str);
-- 獲取數組對象
pudList := returnJson.get_array('data');
-- 循環獲取數組內的數據
for i in 0 .. pudList.get_size - 1 loop
-- 獲取json對象
store := TREAT(pudList.get(i) AS json_object_t);
-- 取出獲取的json對象key對應的值
dbms_output.put_line(store.get_number('cm_id'));
end loop;
end;
