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

Azure Logic App:如何通过Key值从Shopify返回的JSON元字段数组中获取对应Value

Azure Logic App:如何通过Key值从Shopify返回的JSON元字段数组中获取对应Value

我完全懂你的困扰——靠数组索引(比如[0])来取metafields里的值真的太不稳定了,Shopify返回的字段顺序随时可能变,甚至某个字段缺失时,索引位置直接就乱了。你之前尝试的思路是对的,但Logic Apps的表达式语法和你写的有点不一样,所以才会报错。

给你一个能稳定工作的表达式:

first(filter(body('Parse_VariantMetaJSON')?['metafields'], equals(item()?['key'], 'test')))?['value']

我来拆解一下这个表达式的逻辑:

  • filter(body('Parse_VariantMetaJSON')?['metafields'], ...):遍历你的metafields数组,筛选出符合条件的元素
  • equals(item()?['key'], 'test'):这是筛选条件——判断当前遍历的数组元素(用item()指代)的key是否等于你要找的'test'。这里要注意,Logic Apps表达式里用item()而不是@(@是ARM模板的语法,不适用在这里)
  • first(...):因为filter返回的是一个数组(哪怕只有一个匹配元素),所以用first()取出数组里的第一个元素
  • ?['value']:最后获取这个元素的value值,前面的?是为了防止找不到匹配元素时出现空引用错误,让表达式更健壮

举个例子,如果你要获取key为pallet_quantity的value,只需要把表达式里的'test'换成'pallet_quantity'就行:

first(filter(body('Parse_VariantMetaJSON')?['metafields'], equals(item()?['key'], 'pallet_quantity')))?['value']

另外,如果你担心有时候找不到对应key的情况(比如该metafield不存在),可以用coalesce加个默认值,避免报错:

coalesce(first(filter(body('Parse_VariantMetaJSON')?['metafields'], equals(item()?['key'], 'test')))?['value'], '无匹配值')

备注:内容来源于stack exchange,提问作者rs82uk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 11:55:27