Why FORMAT JSON is Used

It preserves the embedded JSON structure when building the outer object, avoiding character-escaping issues.

CREATE OR REPLACE FUNCTION get_rh_cpu_utilization_json RETURN CLOB IS
  l_json CLOB;
  l_items CLOB;
  l_chart CLOB;
BEGIN
  l_chart := get_rh_chart_data_json();
  l_items := get_rh_summary_json();
  SELECT JSON_OBJECT(
           'items' VALUE l_items FORMAT JSON,
           'chart' VALUE l_chart FORMAT JSON
           RETURNING CLOB
         )
    INTO l_json
    FROM dual;

  RETURN l_json;
END get_rh_cpu_utilization_json;
/