You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过WebAPI(PHP/cURL)使用OData过滤JSON嵌套数组字段?

解决OData嵌套数组字段过滤的问题

我来帮你搞定这个过滤嵌套数组的问题!首先看你的示例JSON,嵌套数组的字段名是companies(复数),但你第一个请求里写的是Company(单数),这是核心错误之一,导致服务器找不到对应的字段所以返回空响应。另外,OData的any()操作符确实需要用别名来引用数组元素,这部分你之前照搬文档的思路是对的,但字段名写错了。

正确的请求URL

https://www.ourserver.tld/Opportunities/?$filter=companies/any(d:d/name eq 'Company Name')

为什么这个是对的?

  • companies:严格对应你JSON里的嵌套数组字段名(复数,和你数据里的键完全一致)
  • any(d:d/name eq 'Company Name'):
    • d是数组中单个元素的别名(你可以换成其他任意合法变量名,比如c或者item都没问题)
    • d/name表示引用数组里每个company对象的name属性
    • 整个any()的作用是判断数组中是否存在至少一个元素满足name eq 'Company Name'的条件

你的两个错误解析

  1. 第一个URL用了Company/any(...):字段名是单数,但你的数据里是复数companies,服务器识别不到这个字段,自然返回空结果
  2. 第二个URL去掉了别名部分d:d/:OData语法要求any()必须指定一个变量来代表数组元素,直接写any(name eq ...)不符合语法规范,所以触发语法错误

额外验证提示

  • 确认字段名的大小写是否完全匹配(OData通常对字段名大小写敏感)
  • 确认目标名称的引号和拼写完全一致,避免空格或特殊字符的问题

内容的提问来源于stack exchange,提问作者thom_stackoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:40:34