json - 如何在 PL /SQL 中使用 JSON_KEY_LIST 从嵌套的 JSON_OBJECT_T 中读取键?
问题描述
我有一种json_object_t
如下所示的类型。
v_input_data := new JSON_OBJECT({
"REQS": { "INDICATOR": "Y",
"NUMBER": 0,
"CATEGORY": "TU",
"ID_R": 10888,
"SUPPL_VAL": 0,
"line_itemssub": {
"QTY": 0,
"TOTAL_QTY": 1,
"PIPE": {
"P_CODE": 9801,
"P_ID": 7500030,
"CC_CODE": "C6AJG4"
}
}
},
"Name":"Rajesh",
"Age":47
});
v_input_data.get_keys
只给我 3 个值REQS
,Name
& Age
。但我也希望嵌套对象中存在键。我怎样才能做到这一点?
提前致谢。
解决方案
PL/SQL
SET SERVEROUTPUT ON;
DECLARE
PROCEDURE json_keys (p_object IN JSON_OBJECT_T) IS
v_object JSON_OBJECT_T;
v_keys JSON_KEY_LIST;
v_key VARCHAR2(4000);
BEGIN
v_keys := p_object.get_keys;
FOR i IN v_keys.FIRST..v_keys.LAST LOOP
v_key := v_keys(i);
dbms_output.put_line(v_key);
IF p_object.get(v_key).is_object THEN
v_object := new JSON_OBJECT_T(p_object.get(v_key));
json_keys(v_object);
END IF;
END LOOP;
END json_keys;
BEGIN
json_keys(new JSON_OBJECT_T('{
"REQS": {
"INDICATOR": "Y",
"NUMBER": 0,
"CATEGORY": "TU",
"ID_R": 10888,
"SUPPL_VAL": 0,
"LINE_ITEMSSUB": {
"QTY": 0,
"TOTAL_QTY": 1,
"PIPE": {
"P_CODE": 9801,
"P_ID": 7500030,
"CC_CODE": "C6AJG4"
}
}
},
"Name": "Rajesh",
"Age": 47
}'));
END;
输出
REQS
INDICATOR
NUMBER
CATEGORY
ID_R
SUPPL_VAL
LINE_ITEMSSUB
QTY
TOTAL_QTY
PIPE
P_CODE
P_ID
CC_CODE
Name
Age
PL/SQL procedure successfully completed.
推荐阅读
- opencv - 使用 cv.matchTemplate 查找多个最佳匹配项
- ruby-on-rails - Rails 5:是什么导致“找不到变量:模块”错误?
- ruby-on-rails - 调用 Rails API 时遇到间歇性 404 问题
- typescript - TypeScript 2.4:'类 LocalizationService 错误地实现了接口 ILocalizationService
' - javascript - tsc vs babel:更好的转译/编译器工作流程
- php - 404 :-( 找不到页面!模型 [App\Models\City] 0 没有查询结果
- javascript - 如何使用 Node 获取网站的 HTTP 响应标头
- excel - 检查是否在单元格可能有多个值的列中找到单元格值,然后返回第三个单元格值
- postgresql - pgadmin4 UI 上缺少 varchar
- laravel-backpack - 在更新页面上包括关系实体的列表视图