Azure Logic App中修改JSON属性名并删除指定属性的实现方案
Azure Logic App JSON字段转换最优方案
你当前用嵌套replace做字符串替换的方式存在稳定性缺陷,容易误替换其他字段中匹配的字符串,且无法灵活删除字段,推荐直接用Logic App内置的选择(Select) 动作实现,无需集成账户、无需Liquid模板、也无需For_each循环,是最简单直接的方案,操作如下:
操作步骤
- 保留原有HTTP请求动作,删除原有Compose动作,新增
选择动作,设置运行条件为HTTP请求成功后执行 选择动作的「来自」配置为body('HTTP')(即HTTP请求返回的原始数组)- 在「映射」区域手动添加你需要保留的字段,按需求重命名键名,不需要的
id字段不添加映射即可自动删除,映射规则如下:
- 输出键名
market:对应值填'BitcoinUsdt'即可;如果接口可能返回其他market值,只需要替换值为btcusdt的条目,可写表达式@replace(item()?['market'], 'btcusdt', 'BitcoinUsdt') - 输出键名
price:对应值填item()?['price'] - 输出键名
BitcoinAmount:对应值填item()?['volume'] - 输出键名
UsdtAmount:对应值填item()?['funds'] - 输出键名
created_at:对应值填item()?['created_at'] - 输出键名
side:对应值填item()?['side']
- 后续需要使用转换后的数据时,直接引用
body('选择')即可。
对应动作定义代码示例
你可以直接替换原有动作的代码段使用:
"actions": { "HTTP": { "inputs": { "headers": { "X-API-Key": "..." }, "method": "GET", "uri": "https://api.wazirx.com/api/v2/trades?market=btcusdt" }, "runAfter": {}, "type": "Http" }, "转换交易数据": { "inputs": { "from": "@body('HTTP')", "select": { "BitcoinAmount": "@item()?['volume']", "UsdtAmount": "@item()?['funds']", "created_at": "@item()?['created_at']", "market": "BitcoinUsdt", "price": "@item()?['price']", "side": "@item()?['side']" } }, "runAfter": { "HTTP": [ "Succeeded" ] }, "type": "Select" } }
方案优势
- 属于结构级转换,不会像字符串替换那样出现误替换其他字段内容的问题
- 不需要额外资源,纯内置动作无额外成本
- 配置可视化,后续修改字段映射直接在界面调整即可,不需要维护复杂的嵌套表达式
- 性能远高于For_each循环遍历处理数组的方案
内容的提问来源于stack exchange,提问作者Chris Halcrow
相关产品推荐
相关产品推荐

