Как удалить объект json из вложенного массива с помощью PL/SQL (Oracle >=12.2) и вернуть обновленный документ json
Мне нужно удалить определенные элементы из массива json. Например, удалите второй элемент массива из ключа "отдела", в этом случае:
{
"department":{
"department_name":"DBA",
"department_no":80,
"employees":[
{
"employee_number":9002,
"employee_name":"HALL",
"salary":3000
}]}
а затем вернуть остаток документа без этого элемента массива.
Мне удалось только удалить элемент из массива, но не распечатать весь обновленный документ.
Код PL/SQL показан ниже:
DECLARE
l_top_obj := JSON_OBJECT_T(l_clob);
DBMS_OUTPUT.put_line(' l_top_obj.stringify: ' || l_top_obj.stringify);
l_dept_arr := l_top_obj.get_array('departments');
l_emp_arr := l_dept_obj.get_array('employees');
l_dept_arr.remove(1);
DBMS_OUTPUT.put_line(' l_emp_arr.stringify: ' || l_emp_arr.stringify);
END;
This is the original json document
{
"departments":[
{
"department":{
"department_name":"DEV",
"department_no":70,
"employees":[
{
"employee_number":9000,
"employee_name":"JONES",
"salary":1000
},
{
"employee_number":9001,
"employee_name":"SMITH",
"salary":2000
} ] } },
{
"department":{
"department_name":"DBA",
"department_no":80,
"employees":[
{
"employee_number":9002,
"employee_name":"HALL",
"salary":3000
}]}}]}
Это вывод: l_top_obj - исходный документ, а l_emp_arr - массив сотрудников.
l_top_obj.stringify: {
"departments":[
{
"department":{
"department_name":"DEV",
"department_no":70,
"employees":[
{
"employee_number":9000,
"employee_name":"JONES",
"salary":1000
},
{
"employee_number":9001,
"employee_name":"SMITH",
"salary":2000
} ] } },
{
"department":{
"department_name":"DBA",
"department_no":80,
"employees":[
{
"employee_number":9002,
"employee_name":"HALL",
"salary":3000
}]}}]}
l_emp_arr.stringify: {
"department":{
"department_name":"DEV",
"department_no":70,
"employees":[
{
"employee_number":9000,
"employee_name":"JONES",
"salary":1000
},
{
"employee_number":9001,
"employee_name":"SMITH",
"salary":2000
} ] }
Будет ли json_mergepatch наиболее подходящим подходом по сравнению с созданием нового документа json с нуля с обновленной информацией?