如何使用apex_json更改名称来解析json对象

时间:2018-05-28 11:54:39

标签: oracle apex

我有一个应用程序发送给我这个json块

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

你可以看到"更改价值"下的对象。名称根据更改的数据而有所不同。

我怎样才能进入" old"和"新"值 我尝试了apex_json.get_varchar2,但它需要一个到对象的路径,如果对象名称动态变化,很难对其进行编码。

1 个答案:

答案 0 :(得分:1)

您可以提取对象的名称,例如

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表达式来遵循旧/新值等的路径。