Поскольку вы сами генерируете JSON, вы хотите изменить SOURCE_TYPE на Media Resource. Затем в вашем запросе в первом столбце будет указан тип MIME, поэтому ваш браузер знает, как обрабатывать входящие двоичные данные.
Попробуйте это -
BEGIN
ORDS.DEFINE_HANDLER(
p_module_name => 'rest',
p_pattern => 'stats/',
p_method => 'GET',
p_source_type => 'resource/lob',
p_items_per_page => 0,
p_mimes_allowed => '',
p_comments => NULL,
p_source =>
'SELECT ''application/json'', JSON_OBJECTAGG (
KEY t.team VALUE AVG(t.response_time)
)
AS averages
FROM test_cases t
GROUP BY t.team '
);
COMMIT;
END;
/
Затем я вызываю GET в мой браузер -

{
"foo": 2.6666666666666665,
"bar": 7
}
Теперь, допустим, у вас также есть некоторые обычные данные, но только ОДИН из столбцов хранится JSON в или сгенерированный БД - вы хотите, чтобы ORDS JSON - уточнил ваши обычные данные, но не данные, которые УЖЕ json.
Есть способ получить свой торт и съесть его тоже, на серебряная ложка.
BEGIN
ORDS.DEFINE_HANDLER(
p_module_name => 'rest',
p_pattern => 'stats/',
p_method => 'GET',
p_source_type => 'json/collection',
p_items_per_page => 0,
p_mimes_allowed => '',
p_comments => NULL,
p_source =>
'SELECT JSON_OBJECTAGG (
KEY t.team VALUE AVG(t.response_time)
)
"{}jsons"
FROM test_cases t
GROUP BY t.team '
);
COMMIT;
END;
/
Для ваших JSON данных добавьте этот столбец псевдоним
"{}jsons"
Запуск теперь выглядит так -
