plsql - 如何获取数组值的 PL/JSON 数组
问题描述
如何使用 Pl/JSON 从以下 JSON 检索内容?我需要获取第一个数组和第二个数组的值
{
"documents1": [
{
"key": "NATID",
"validations": [
{
"error": "Field is required"
}
]
}
]
}
例如,我编写了如下查询,它返回第一个数组的值没有任何问题,但它不返回数组数组的值
DECLARE
obj json
:= json
('{
"documents1": [
{
"key": "NATID",
"validations": [
{
"error": "Field is required"
}
]
}
]
}'
);
list_value json_list;
list_value_validation json_list;
LIST_VALUES json_list;
BEGIN
list_value := json_list (obj.get ('documents'));
FOR i IN 1 .. list_value.COUNT
LOOP
DBMS_OUTPUT.put_line ( 'key->'
|| json_ext.get_string (json (list_value.get (i)),
'key'
)
);
----------below scripts are not working
list_value_validation := json_list (list_value.get ('values'));
FOR iv IN 1 .. list_value_validation.COUNT
LOOP
DBMS_OUTPUT.put_line
( 'error->'
|| json_ext.get_string
(json (list_value_validation.get (iv)
),
'error'
)
);
END LOOP;
END LOOP;
END;
解决方案
修改代码如下,它工作正常。
BEGIN
list_value := json_list (obj.get ('documents'));
FOR i IN 1 .. list_value.COUNT
LOOP
p_string_docs := list_value.get (i).TO_CHAR ();
obj_docs := json (p_string_docs);
l_output := json_ext.get_string (obj_docs, 'key');
list_docs_validation := json_list (obj_docs.get ('values'));
FOR i IN 1 .. list_docs_validation.COUNT
LOOP
l_output :=
json_ext.get_string (obj_docs, 'key')|| ' | '
|| json_ext.get_string (json (list_docs_validation.get (i)),
'code'
);
DBMS_OUTPUT.put_line (l_output);
END LOOP;
END LOOP;
END;
推荐阅读
- java - 是否可以在 Android 来电时自动发送短信?
- python - 为文本数据抓取网站 html 时出现 lxml 错误。尝试了几次迭代
- javascript - 通过单击javascript减慢滚动页面
- c# - WPF:在后面的代码中访问转换后的 Canvas 坐标
- rabbitmq - RabbitMQ 管理插件中的配置条目
- php - fsockopen 总是 操作超时
- excel - 如何使用 Power Query 在一行中删除重复项?
- excel - 如何将多个 Excel 工作表迁移到一个主工作簿
- python - 在 tablewidget Qt5 Python 中显示 CSV 文件
- r - 如何将字符串转换为R中的嵌套列表?