Azure 逻辑应用程序:从解析的 JSON 中的键值检索值

问题描述 投票:0回答:1

我正在构建一个逻辑应用程序,其中有一些从 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']

但逻辑应用程序始终声明它是无效表达式。

azure expression azure-logic-apps azure-logic-app-standard
1个回答
0
投票

使用 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;
© www.soinside.com 2019 - 2024. All rights reserved.