来自 Oracle Apex 的 Json 无效

Invalid Json from Oracle Apex

我在使用 Oracle Apex 中的 REST 方法 returning json object 时遇到问题。 Apex 在每个引号前放置一个转义字符,因此 json object 被 return 编辑为字符串。

数据库过程被定义为采用三个参数。一进二出,其中第一个输出是 Json returned 作为 clob,另一个作为 varchar2。

dbProcedure(paymentid in varchar2, paymentKeys out clob, message out varchar2)

如果我使用 SQL Developer 中的 pl/sql 脚本调用该过程,我会得到一个正确定义的 json。但是,如果我从 Apex 调用该过程,我会得到 json 和引号的转义字符。

PL/SQL 过程调用(在 SQL 开发人员中)returns:

{"PaymentKeys":[{"PaymentKey":"00000084","InvoiceId":5000119,"InvoiceNumber":"94500502","A_P-t ...

并且,使用 Postman,Apex Rest 调用 returns:

{"keyvalues":"{\"PaymentKeys\":[{\"PaymentKey\":\"00000084\",\"InvoiceId\":\"\\"5000119\\"\",\"InvoiceNumber\":\"94500502\",\"A_P- ...

REST 方法在 APEX 中定义为:
方法:GET
来源类型:PL/SQL
格式:JSON
参数:第一个 IN 作为 HTTP HEADER 和两个 OUT 作为类型 RESPONSE.

begin
   dbProcedure(:paymentid, :paymentKeys, :message);
end;

我可以看到,如果我将 Rest 方法中的 Source Type 更改为类型 HTTP HEADER 我从该过程中得到正确的结果,即有效的 Json。但是,通过将 Sourse Type 设置为 RESPONSE,我得到了无效的 Json。所以这似乎是 Apex 的一些功能。 (其余方法的使用者要求获得响应而不是 HTTP HEADER。)

我现在尝试将其定义为单个参数 REST。在数据库中定义了一个函数 returning 一个 clob,REST 参数是 IN/OUT,访问方法源类型 作为 HTTP HEADER。这也会产生正确的结果。

如何让 Apex 获得 return 正确的结果,一个有效的 json?

产品版本:
顶点 19.1.0.00.15
Oracle Database 19c 企业版 Release 19.0.0.0.0
邮递员 9.15.0
SQL 开发者 21.4.2.018

杰夫史密斯(ThatJeffSmith)在这个here上有一个post,看来htp.p是出路
我选择的解决方案是使用 htp.p.