Я пытаюсь проанализировать json, получить из него данные и поместить его в коллекцию Apex.
DECLARE
s varchar2(32767) := APEX_APPLICATION.g_x01;
j apex_json.t_values;
v apex_json.t_value;
n_count number;
temp varchar2(1000);
Begin
APEX_COLLECTION.CREATE_OR_TRUNCATE_COLLECTION(
p_collection_name => 'Settings'
);
apex_json.parse(p_values => j, p_source => s);
n_count := apex_json.get_count(p_path => 'Attribute', p_values => j);
for i in 1 .. n_count
loop
v := apex_json.get_value(p_path => 'TEST[%d]', p0 => i, p_values => j);
temp := v.varchar2_value;
APEX_COLLECTION.ADD_MEMBER(
p_collection_name => 'Settings',
p_c001 => 'TEST',
p_c002 => temp
);
end loop;
end;
и он работает хорошо, когда атрибут Test является массивом. Но когда это не так, есть проблема. Я легко могу обработать одно значение с помощью
apex_json.parse(s);
APEX_COLLECTION.ADD_MEMBER(
p_collection_name => 'Settings',
p_c001 => 'Test',
p_c002 => apex_json.get_varchar2(p_path => 'TEST')
);
Но я не знаю, как проверить при запуске, какой тип TEST (массив или varchar2)