我正在构建一个逻辑应用程序,其中有一些从 Shopify 中提取的 JSON,它具有如下扩展属性
{
"metafields": [
{
"id": 222222,
"namespace": "global",
"key": "test",
"value": "210690"
},
{
"id": 555555,
"namespace": "custom",
"key": "pallet_quantity",
"value": 2
}
]
}
我可以使用这样的表达:
body('Parse_VariantMetaJSON')?['metafields'][0]['value']
为了让我获得名称为 test 的对象的值,但是从我的测试来看,它并不总是 0,如果它为空并且填充了另一个字段,则该值将变为 0。
我可以使用使用键值进行标识的表达式来定位它吗?我试过这个
first(body('Parse_VariantMetaJSON')?['metafields'][?(@['key'] == 'test')])?['value']
但逻辑应用程序始终声明它是无效表达式。
使用 Javascript Code 提取该值。添加名为“执行 JavaScript 代码”的内联代码操作并添加以下代码。您可以稍后使用此操作的输出,它将包含值,例如上面给出的示例中的 210690。
function getFirstValueByKey(parsedJsonObj, key) {
let metafieldsWithKeyAsTest = parsedJsonObj.metafields.filter((mf) => mf.key == key);
return metafieldsWithKeyAsTest.length > 0 ? metafieldsWithKeyAsTest[0].value : null;
}
let parsedJsonObj = workflowContext.actions.Parse_VariantMetaJSON.outputs.body
var firstValue = getFirstValueByKey(parsedJsonObj, "test");
console.log(firstValue);
return firstValue;