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

OData Expand查询未返回预期扁平表,如何获取扁平结构数据?

OData查询返回嵌套结构的扁平化解决方案

OData的$expand本身就是按照规范返回嵌套关联对象的,原生查询无法直接输出你要的扁平表结构,你可以通过以下两种方式实现需求:

1. 后端支持的话用OData $apply语法(推荐,若服务支持)

如果你的OData服务支持OData v4.01及以上版本的$apply扩展,可以通过compute操作将嵌套字段投影为顶层字段,再用$select筛选:

https://myurl.com/odata/Reporting/v1/SupplierOfferRows?$apply=compute(Item_ID as Item/ID, Item_itemID as Item/itemID)&$select=ID,Item_ID,Item_itemID

注意:不是所有OData服务都开启了$apply功能,需要确认后端是否支持。

2. 客户端手动处理扁平化数据

如果后端不支持$apply,拿到返回的嵌套数据后,在客户端做字段映射即可。举两个常用语言的示例:

JavaScript示例:

// 假设返回的原始数据存在supplierOfferRows数组中
const flattenedTable = supplierOfferRows.map(row => ({
  ID: row.ID,
  "Item.ID": row.Item?.ID,
  itemID: row.Item?.itemID
}));

Python示例:

# 假设原始数据存储在supplier_offer_rows列表中
flattened_table = [
    {
        "ID": row["ID"],
        "Item.ID": row["Item"].get("ID") if row.get("Item") else None,
        "itemID": row["Item"].get("itemID") if row.get("Item") else None
    }
    for row in supplier_offer_rows
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:49:53