我有一个应用程序发送给我这个json块
{
"CHANGED VALUES":{
"FNAME":{
"old":"fname_old",
"new":"fname_new"
},
"LNAME":{
"old":"lname_old",
"new":"lname_new"
}
}
}
你可以看到"更改价值"下的对象。名称根据更改的数据而有所不同。
我怎样才能进入" old"和"新"值 我尝试了apex_json.get_varchar2,但它需要一个到对象的路径,如果对象名称动态变化,很难对其进行编码。
答案 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表达式来遵循旧/新值等的路径。