共計 1891 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容介紹了“oracle 怎么解析 json 字符串”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
DECLARE
l_json_str VARCHAR2(4000);
l_json json;
l_year VARCHAR2(10);
l_month VARCHAR2(10);
TYPE arrays_data_rec IS RECORD(
id NUMBER
,code VARCHAR2(30)
,NAME VARCHAR2(100));
TYPE arrays_data_tab IS TABLE OF arrays_data_rec INDEX BY BINARY_INTEGER;
l_arrays_tab arrays_data_tab;
l_bodylist json_list; --json 列表
l_arrays_json json; -- 用于解析每一個數組信息
BEGIN
l_arrays_tab.delete;
l_json_str := {
year : 2019 ,
month : 05 ,
strArray : [{
id : 1,
code : CODE1 ,
name : NAME1
},{
id : 2,
code : CODE2 ,
name : NAME2
},{
id : 3,
code : CODE3 ,
name : NAME3
}] }
BEGIN
-- 將字符串轉化為 json 格式
l_json := json(l_json_str);
-- 獲取 json 的值
l_year := json_ext.get_string(l_json
, year
l_month := json_ext.get_string(l_json
, month
dbms_output.put_line(year: || l_year || --month: || l_month);
--json 數組初始化
l_arrays_json := json();
-- 將 strArray 數組存至 l_bodylist 對象中
l_bodylist := json_ext.get_json_list(l_json
, strArray
IF l_bodylist IS NOT NULL THEN
-- 循環數組,將值寫入內存表中
FOR idx IN 1 .. l_bodylist.count LOOP
l_arrays_json := json(l_bodylist.get(idx));
-- 注意:根據傳入的值的數據類型進行對應的轉換,不然會取不到值
l_arrays_tab(idx).id := json_ext.get_number(l_arrays_json
, id
l_arrays_tab(idx).code := json_ext.get_string(l_arrays_json
, code
l_arrays_tab(idx).name := json_ext.get_string(l_arrays_json
, name
dbms_output.put_line(l_arrays_tab(idx).id || -- || l_arrays_tab(idx).code || -- || l_arrays_tab(idx).name);
END LOOP;
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line( JSON 格式轉換異常!
END;
EXCEPTION
WHEN fnd_api.g_exc_error THEN
dbms_output.put_line(error: || SQLCODE || -- || SQLERRM);
WHEN fnd_api.g_exc_unexpected_error THEN
dbms_output.put_line(Unexpected_error. || SQLCODE || -- || SQLERRM);
WHEN OTHERS THEN
dbms_output.put_line(Other error: || SQLCODE || -- || SQLERRM);
END;
“oracle 怎么解析 json 字符串”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!
正文完