我有一个应用程序发送给我这个json块
{
"CHANGED VALUES":{
"FNAME":{
"old":"fname_old",
"new":"fname_new"
},
"LNAME":{
"old":"lname_old",
"new":"lname_new"
}
}
}
如您所见,“CHANGED VALUES”下的对象的名称会根据更改的数据而有所不同。
我如何获得“旧”和“新”值我尝试了apex_json.get_varchar2但它需要一个到该对象的路径,如果对象名称动态更改,很难对其进行编码。
您可以提取对象的名称,例如
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表达式来遵循旧/新值等的路径。