极奇策RPA技术教程:更新字典键 (NodeDictUpdateValue) - 自动化开发与配置详细指南

更新字典键
📖 节点概述
更新字典中指定键的值(支持新增不存在的键)。支持通过路径语法(如 user/address/city)更新嵌套字典中的深层键,支持数组通配符 [*] 批量更新数组中每个对象的指定键,也支持数组索引 [0] 精确更新某个位置的值。可以同时更新多个键(批量更新),每个键可对应不同的新值(通过动态输入端口分别传入),或使用单个列表统一传入一组新值(合并输入模式)。提供可视化工具辅助选择键路径。该节点为纯数据节点,无执行端口。
💡 使用场景:
- 深度修改:修改嵌套 JSON 中的深层字段,无需逐层提取再赋值。
- 批量修改:一次性更新多个不相关的键,减少节点数量。
- 数组内对象字段批量更新:如将数组中所有用户的
status字段改为"active"。 - 动态键名:通过变量构建键路径,实现程序化更新。
- 默认值填充:为缺失的键自动补充默认值(键不存在时会自动创建中间路径)。
🎮 实战连线指南:如何正确使用它?
节点有三个固定输入端口:原字典、键,以及根据配置动态变化的 新值 端口(或 新值列表 端口)。输出端口 新字典。
场景案例:更新用户年龄(单键单值)
准备字典:在“原字典”文本框中输入 JSON:
{"user": {"name": "张三", "age": 25}}或从上游连线传入字典对象。
设置键路径:在“键”输入框中填写
user/age(斜杠表示嵌套层级)。设置新值:节点会动态生成一个名为
user/age的输入端口(若“合并输入”未勾选)。在该端口输入30(或连线传入)。获取结果:
新字典输出:{"user": {"name": "张三", "age": 30}}
批量更新多个键:
- 在“键”输入框中输入 JSON 数组:
["user/name", "user/age"] - 节点会动态生成两个输入端口:
user/name和user/age,分别填入新值"李四"和28。 - 结果:
{"user": {"name": "李四", "age": 28}}
合并输入模式:
- 勾选高级选项“合并输入”。
- 在“键”中输入
["a","b","c"]。 - 节点生成一个名为
新值列表的输入端口,填入[1,2,3](列表)。 - 结果:依次将
a更新为1,b更新为2,c更新为3。
数组通配符批量更新:
- 字典:
{"users":[{"name":"A","status":"off"},{"name":"B","status":"off"}]} - 键:
users/[*]/status - 新值:
"active" - 结果:所有用户的 status 都变为
"active"。
⚙️ 引脚与参数说明
📥 输入引脚(固定)
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 原字典 | DICT / STRING | 待更新的字典。支持字典对象、JSON 字符串或简易键值对格式(通过智能解析器)。 |
| 键 | STRING | 要更新的键路径。支持斜杠分隔的嵌套路径(如a/b/c)、数组通配符 [*]、数组索引 [0]。也支持 JSON 数组格式传入多个键(如 ["key1","key2"])。 |
📥 输入引脚(动态)
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| {键名} | ANY | 当“合并输入”关闭时,每个键会生成一个对应的输入端口,用于传入该键的新值。 |
| 新值列表 | LIST | 当“合并输入”开启时,该端口用于传入一个列表,列表长度应与键的数量一致,按顺序对应每个键的新值。 |
⚙️ 控件参数
| 控件名称 | 类型 | 说明 |
|---|---|---|
| 原字典 | 多行文本框 | 手动输入字典内容。连线时优先使用连线值。 |
| 键 | 单行文本框 | 手动输入键路径(单键或 JSON 数组)。 |
| 合并输入 | 复选框(高级) | 勾选后,所有新值通过一个统一的新值列表 端口传入(列表形式);不勾选则每个键生成独立的值端口。 |
📤 输出引脚
| 引脚名称 | 数据类型 | 说明 |
|---|---|---|
| 新字典 | DICT | 更新键值后的新字典(原字典不会被修改)。 |
🔧 路径语法详解
- 斜杠分隔:
a/b/c表示字典a下的键b下的键c。 - 转义斜杠:如果键名本身包含斜杠,使用
\/转义,例如http\/https。 - 数组通配符:
[*]表示遍历数组中的每个元素,对每个元素执行更新。 - 数组索引:
[0]表示数组的首个元素(索引从 0 开始)。 - 类型转换:路径中的数字会被自动转为整数键(适用于字典键为数字的情况);
<int>123可强制转为整数键;<bool>true可转为布尔键。
⚠️ 注意事项
- 原字典不变:节点返回更新后的新字典,不会修改原输入字典(内部为深拷贝,避免了副作用,但注意性能)。
- 自动创建中间路径:如果更新路径中的某个中间键不存在,节点会自动创建空字典作为占位,确保更新可以执行。
- 批量更新时键与值的匹配:在合并输入模式下,新值列表的长度应与键的数量一致;若长度不足,缺失的键将使用
None作为新值;若长度超出,多余的值被忽略。 - 数组通配符的限制:
[*]只能遍历数组的一层,不能级联使用(如[*]/[*]不支持多层嵌套数组的批量更新)。 - 动态端口的生命周期:修改“键”或“合并输入”后,节点会自动增删对应的输入端口,删除端口时对应连线也会断开。
- 性能:对大型嵌套结构进行批量更新时,深拷贝可能消耗较多内存。但对于常规数据量,影响可忽略。
💎 小贴士:
- 点击眼睛图标(👁️)可以打开可视化面板,直观选择要更新的键路径,自动填入“键”输入框。
- 刷新按钮(🔄)可手动同步动态端口(通常会自动同步,该按钮用于异常情况)。
- 清空按钮(🗑️)可一键清空“键”输入框并收缩动态端口。
- 使用数组通配符
[*]可以实现像users/[*]/status这种批量修改。- 若需要同时更新多个不相关的键,推荐使用 JSON 数组格式的键路径,避免多次调用该节点。
- 该节点是纯数据节点,无需执行信号,可在数据流中直接使用。
这篇文档对您有帮助吗?
您的反馈将帮助我们持续优化文档内容

