Shopify bulk query返回JSONL结果解析及嵌套数据结构还原方法咨询
识别子记录所属父属性的方法
1. 从gid全局ID中提取对象类型判断
Shopify返回的所有对象ID格式统一为gid://shopify/[对象类型]/[数值ID],你可以直接提取ID中的对象类型字段,和你GraphQL查询中Product下的关联字段一一对应:
- ID中包含
ProductVariant→ 归属父级Product的variants数组 - ID中包含
Collection→ 归属父级Product的collections数组 - ID中包含
ProductImage→ 归属父级Product的images数组 - ID中包含
Metafield→ 按父级对象类型归属到对应父级的metafields数组
你示例中的第二行记录ID为gid://shopify/ProductVariant/40163436363956,提取到对象类型为ProductVariant,因此直接判定为父级Product的variants数组元素。
2. 结合自定义的GraphQL查询结构做校验
你自己编写的查询中,Product下的嵌套列表类型只有variants、collections、images三类,options字段为直接嵌套返回(你示例的首行Product记录已经自带了完整的options数组),不会出现类型歧义的情况。
补充优化方案
如果担心后续查询调整后出现类型冲突,可以在编写GraphQL查询时,给所有嵌套节点添加__typename返回字段,这样返回的每一行JSONL记录都会明确携带类型标识,不需要依赖ID解析判断,容错性更高,修改示例如下:
variants(first: 10) { edges { node { __typename # 新增该字段 id price title } } }
完整还原流程参考
- 首次遍历所有JSONL行,将所有对象以ID为key存入全局字典,同时给每个Product对象预先初始化
variants、collections、images空数组,给每个Collection对象预先初始化metafields空数组 - 二次遍历所有携带
__parentId的子记录:- 提取子记录的对象类型
- 通过
__parentId找到对应父级对象 - 将子记录推入父级对象对应的属性数组即可
内容的提问来源于stack exchange,提问作者Apperside
相关产品推荐
相关产品推荐

