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

Azure Logic Apps中ParseJson组件因反斜杠解析失败的解决方法

解决Azure Logic Apps ParseJson处理单个反斜杠的问题

问题本质

你拿到的JSON本身不符合JSON语法规范——JSON中单个反斜杠必须转义为双反斜杠,否则会被判定为无效转义序列,导致ParseJson报错。要保留原始的单个反斜杠值,需要分两步处理:先修复JSON合法性,再还原原始值。

具体实现步骤

  • 第一步:修复非法JSON为合法格式
    在ParseJson组件之前,先对原始JSON字符串做替换,把单个反斜杠转成双反斜杠。

    • 如果原始请求体是字符串类型,直接用表达式:
      replace(triggerBody(), '\', '\\')
      
    • 如果原始请求体是JSON对象(但本身格式非法),先转成字符串再替换:
      replace(string(triggerBody()), '\', '\\')
      

    这一步会把{"user":"bbbbbb\aaaaaa"}转换成合法的{"user":"bbbbbb\\aaaaaa"}。

  • 第二步:用修复后的JSON解析
    将第一步输出的结果作为ParseJson组件的Content输入,此时组件能正常解析,解析后的user字段值为bbbbbb\\aaaaaa。

  • 第三步:还原单个反斜杠
    对解析后的字段值做反向替换,把双反斜杠转回单个反斜杠。使用表达式:

    replace(body('ParseJson')?['user'], '\\', '\')
    

    最终得到的结果就是你需要的bbbbbb\aaaaaa。

特殊场景补充

如果原始数据中存在其他合法的JSON转义序列(比如\n、\t),直接替换所有反斜杠会破坏这些合法转义。这种情况下需要精准替换,只处理不属于合法JSON转义的单个反斜杠,用正则表达式替换的表达式示例:

replace(string(triggerBody()), '(?<!\\)(\\[^btnfr"\\/u])', '\\$1')

这个正则会匹配未被转义、且后面不是合法JSON转义字符的反斜杠,仅对这类反斜杠做转义处理,避免破坏原有合法转义。

内容的提问来源于stack exchange,提问作者Gosfly

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:05:07