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

问题描述 投票:0回答:1

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

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

如您所见,“CHANGED VALUES”下的对象的名称会根据更改的数据而有所不同。

我如何获得“旧”和“新”值我尝试了apex_json.get_varchar2但它需要一个到该对象的路径,如果对象名称动态更改,很难对其进行编码。

oracle apex
1个回答
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表达式来遵循旧/新值等的路径。

© www.soinside.com 2019 - 2024. All rights reserved.