共计 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 小编将为大家输出更多高质量的实用文章!
正文完