2

我创建了一个 post 方法来接收客户的地理位置数据: Post 方法

当我使用 JSON 调用 post 方法时:

{"customer": 1, "latitude":-21.13179, "longitude":-47.736782 }

我的 PL/SQL 脚本有效。

现在我想发送一组记录,但我不知道该怎么做。我创建了一个 PUT 方法来接收地理位置集合,并构建了一个脚本来解析参数: Put 方法

当我使用 JSON 调用 put 方法时:

{  
   "items":[  
      {  
         "customer":1,
         "latitude":-21.13179,
         "longitude":-47.736782
      },
      {  
         "customer":1,
         "latitude":-21.13179,
         "longitude":-47.736782
      }
   ]
}
PL/SQL code:

declare
l_values apex_json.t_values;
begin
apex_json.parse (
           p_values => l_values,
           p_source => :items );
end;

我收到消息:

400 - Bad Request - Expected a value but got: START_ARRAY.

我做错了什么?我想创建一个 post/put 方法来接收一个集合。谢谢你的帮助。

4

2 回答 2

1

OracleBase 中有一个示例显示了在 12c 中使用“JSON_Table”和在 12Cr2 中使用“JSON_Obect_t”pl/sql 的方法。JSON数据作为blob传递给存储的proc,然后解析和更新/无论如何。我尚未对其进行测试,但它看起来是处理显然无法由 ORDS“开箱即用”处理的集合的好方法。我曾尝试使用批量加载方法来加载临时表,但它仅适用于 csv,而且有点乏味。这是Jeff Smiths 的博客文章

我还没有对此进行测试,我重新构建了单独发送每个条目的方法,但最终我需要使用它。当我使用示例时,我会更新这个答案。

于 2019-01-30T15:37:46.560 回答
0

我面临同样的问题,原因是以下 URL 中发布的内容。

https://community.oracle.com/thread/2182167?start=0&tstart=0

“在 APEX 侦听器 1.1 中,PL/SQL 处理程序将自动将 JSON 属性转换为隐式参数。请注意,这仅适用于简单的 JSON 对象,不支持数组或嵌套对象。”

基本上 - 不能传递集合/数组。我不确定这现在是否已经改变,或者是否有计划在路线图中改变它。

于 2018-03-15T16:01:51.757 回答