Как удалить объект 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 с нуля с обновленной информацией?

0 ответов

Другие вопросы по тегам