Plsql 如何获取数组值的PL/JSON数组
如何使用Pl/JSON从下面的JSON检索内容? 我需要获取第一个数组和第二个数组的值Plsql 如何获取数组值的PL/JSON数组,plsql,oracle11g,pljson,Plsql,Oracle11g,Pljson,如何使用Pl/JSON从下面的JSON检索内容? 我需要获取第一个数组和第二个数组的值 { "documents1": [ { "key": "NATID", "validations": [ { "error": "Field is required" } ] } ] } 例如,我编写了如下的查询,它返回第一个数组的值,没有任何问题,但不返回数组的数组值 DECLARE
{
"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;