Skip to content

fix: JSON Editor 节点入参按 JSON 转义 {{变量}} - #7835

Closed
kevin9327 wants to merge 1 commit into
labring:mainfrom
kevin9327:fix/json-editor-variable-escape
Closed

kevin9327 wants to merge 1 commit into
labring:mainfrom
kevin9327:fix/json-editor-variable-escape

Conversation

@kevin9327

Copy link
Copy Markdown
Contributor

现象

插件、工具、工作流节点上的 JSON Editor 可以写 {{变量}}。变量值里一旦有引号、换行或反斜杠,运行时 object / array 入参会变成空对象 {}

例如 JSON Editor 内容是:

{"name": "{{userName}}"}

userNameAda "Lovelace" 时,节点实际拿到的是 {},不是 { "name": "Ada \"Lovelace\"" }。下游工具、插件、HTTP 请求都会丢字段。

JSON Editor 的补全会插入 {{key}},这个路径很常见。

原因

getWorkflowNodeRunParams 对所有带 {{ 的字符串都走 replaceEditorVariable。那是普通文本替换,不会按 JSON 转义。

替换后的文本不再是合法 JSON,valueTypeFormat 对 object 解析失败就返回 {},对 array 会把整段坏 JSON 再包一层数组。

HTTP 节点的 JSON Body 已经有 replaceJsonBodyString,会看变量是否在引号内再转义。JSON Editor 入参没有走这条路径。

修改

  • JSON Editor,以及 object / array 等 JSON 值类型,改用 replaceJsonBodyString
  • 普通 textarea / input 仍走文本替换
  • replaceJsonBodyString 抽到 dispatch/utils,HTTP JSON Body 和节点 JSON 入参共用

验证

新增 packages/service/test/core/workflow/dispatch/utils/runtime.test.ts,并回归 http.test.ts 里原有的 JSON Body 替换用例。

  • 修改前:JSON Editor 引号/换行/节点输出引用 3 个用例失败,对象被解析成 {}
  • 修改后:6 passed
  • 原有 HTTP JSON Body 用例:23 passed

prettiergit diff --check 通过。

AI-assisted (Grok)

插件/工具/工作流节点的 JSON Editor 之前按普通文本替换变量。
变量里的引号、换行、反斜杠会弄坏 JSON,valueTypeFormat 把 object/array 解析成 {}。
与 HTTP JSON Body 共用同一套按引号转义的替换。
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@c121914yu

Copy link
Copy Markdown
Collaborator

不再对双花括号内容进行进一步适配和处理,该变量引用方式已被弃用,目前都使用文本输入框/引用变量

@c121914yu c121914yu closed this Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants