PHP调用API报Expected a list of items but got type dict错误排查
你的判断完全正确,问题就出在entities字段的嵌套结构不符合接口要求。
问题原因
错误提示Expected a list of items but got type "dict"已经明确说明:接口期望该字段接收列表类型(对应PHP的索引数组、JSON的[]结构),但你当前传递的是字典类型(对应PHP的关联数组、JSON的{}结构)。
你当前的entities赋值:
"entities" => [ "property_id" => 89835 ]
在请求时会被序列化为"entities": {"property_id": 89835},属于对象结构,不符合接口对列表类型的要求。
修复方案
把实体对象包在一层索引数组里即可,修改后代码如下:
$data = array( "from_date" => "2021-11-10", "to_date" => "2021-11-21", "adults" => 1, "guest_id" => 2954339, "stay_type" => "GUEST", "entities" => [ [ "property_id" => 89835 ] ] ); $reservation = fetch_api('reservations', '', 'POST', $data);
修改后的entities序列化后为"entities": [{"property_id": 89835}],符合列表类型要求。
验证建议
你可以在fetch_api函数中增加请求参数序列化后的日志输出,和接口文档要求的格式做对比,就能快速定位这类格式问题。你调用无嵌套数组的接口正常,说明基础请求逻辑没有问题,调整结构后即可正常请求。
内容的提问来源于stack exchange,提问作者stemon
相关产品推荐
相关产品推荐

