我创建了一个post方法来接收客户的地理位置数据: Post method
当我使用JSON调用post方法时:
{"customer": 1, "latitude":-21.13179, "longitude":-47.736782 }
我的PL / SQL脚本有效。
现在我想发送一组记录,但我不知道该怎么做。 我创建了一个PUT方法来接收地理定位集合,我构建了一个脚本来解析参数: Put method
当我使用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方法来接收一个集合。 谢谢你的帮助。
答案 0 :(得分:0)
我面临同样的问题,原因将在下面的网址中发布。
https://community.oracle.com/thread/2182167?start=0&tstart=0
“在APEX Listener 1.1中,PL / SQL Hander会自动将JSON属性转换为隐式参数。请注意,这仅适用于简单的JSON对象,不支持数组或嵌套对象。”
基本上 - 一个人无法传递集合/数组。我不确定现在是否已经改变,或者是否有任何计划在路线图中改变这一点。
答案 1 :(得分:0)
There is an example in OracleBase显示了一种在12c中使用'JSON_Table'和在12Cr2中使用'JSON_Obect_t'pl / sql的方法。 JSON数据作为Blob传递到存储的proc,然后该proc进行解析和更新。我尚未对其进行测试,但是它似乎是一种处理集合的好方法,显然,ORDS不能“即开即用”地对其进行处理。我已经尝试过使用bulkload方法加载临时表,但这仅适用于csv,有点繁琐。这是Jeff Smiths blog post on that
我还没有测试过,我重建了单独发送每个条目的方法,但最终我需要使用它。当我做例子我会更新这个答案。