PL/SQL-Neuling hier.Parse JSON-Array in PL/SQL
Ich verwende Oracle APEX als meinen REST-Server und sende ein JSON-Array (items
) von meiner App an den REST-Server. Der JSON enthält Protokolle, von denen es 100er geben könnte. Ich kann sie eins nach dem anderen erfolgreich senden, aber das ist nicht effizient, deshalb möchte ich stattdessen ein JSON-Array senden können, das die Logs enthält. Hier
ist einige Test JSON:
{
"items": [{
"source": "00000999",
"message": "test1"
}, {
"source": "00000999",
"message": "test2"
}, {
"source": "00000999",
"message": "test3"
}, {
"source": "00000999",
"message": "test4"
}]
}
Sobald ich analysieren kann, dass JSON-Array, dann werde ich sie in die Datenbank als separate Zeilen hinzufügen.
Hier ist, was ich im Moment haben:
set serveroutput on;
declare
items varchar2(2000):= '{"items":[{"source": "00000999","message": "test1"}, {"source": "00000999","message": "test2"}, {"source": "00000999","message": "test3"}, {"source": "00000999","message": "test4"}]}';
v_source varchar2(100);
v_message varchar2(2000);
v_json_list json_list;
v_json_list2 json_list;
begin
v_json_list := json_list(items);
v_json_list2 := json_ext.get_string(json(v_json_list.GET(0)),'items');
for i in 1..v_json_list2.count
loop
begin
v_source := json_ext.get_string(json(v_json_list2.GET(i)),'source');
v_message := json_ext.get_string(json(v_json_list2.GET(i)),'message');
ca_log_pak.log_info(v_source, v_message);
end;
end loop;
commit;
dbms_output.put_line('Y');
exception
when others then
dbms_output.put_line(SQLERRM);
end;
Dies ist ein Fehler werfen sagen expression is of the wrong type
auf v_json_list := json_list(items);
Kann mir jemand zeigen, wie richtig die items
Array zu analysieren?
Dank
Fehler sehen, ist weitgehend selbsterklärend. "Falscher Typ" –
Könnten Sie einen Typ vorschlagen, den ich anstelle von json_list verwenden kann? – eoinzy