Как разобрать объект json с изменением имени, используя apex_json - PullRequest
0 голосов
/ 28 мая 2018

У меня есть приложение, отправляющее мне этот блок json

{
   "CHANGED VALUES":{
        "FNAME":{
            "old":"fname_old",
            "new":"fname_new"
         },
         "LNAME":{
            "old":"lname_old",
            "new":"lname_new"
         }
    }
}

, поскольку вы можете видеть, что объекты в разделе "ИЗМЕНЕННЫЕ ЗНАЧЕНИЯ" имеют имя, которое меняется в зависимости от измененных данных.

какМогу ли я добраться до "старых" и "новых" значений, которые я пробовал apex_json.get_varchar2, но ему нужен путь к объекту, его сложно кодировать, если имя объекта динамически изменяется.

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете извлечь имена объектов, например,

SQL> set serverout on
SQL> declare
  2   json varchar2(1000) :=
  3  '{
  4     "CHANGEDVALUES":{
  5          "FNAME":{
  6              "old":"fname_old",
  7              "new":"fname_new"
  8           },
  9           "LNAME":{
 10              "old":"lname_old",
 11              "new":"lname_new"
 12           }
 13      }
 14  }';
 15
 16    l_elem   wwv_flow_t_varchar2;
 17  begin
 18    apex_json.parse(json);
 19    l_elem := apex_json.get_members(p_path=>'CHANGEDVALUES');
 20    for i in 1 .. l_elem.count loop
 21      dbms_output.put_line('member name       : ' || l_elem(i));
 22    end loop;
 23  end;
 24  /
member name       : FNAME
member name       : LNAME

PL/SQL procedure successfully completed.

Как только вы это получите, вы получите стандартные выражения JSON, чтобы следовать по пути вниз по старым / новым значениям и т. Д.

...