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

如何用JOLT为JSON软件对象添加对应架构的architecture属性

JOLT转换:为软件对象添加架构标识属性

需求说明

为JSON payload中software字段下x86、x64数组内的每个软件对象,新增architecture属性,属性值为该对象所属的架构类型(x86或x64)。

输入JSON

{"name": "T15P-GEN3","software": {"x86": [{"name": "AAA","version": "1.3.4","uninstall": "MsiExec.exe /I{3A969900-CAD5-4FB8-B5D1-1F8D9028C6AA}"},{"name": "BBB","version": "1.1.2","uninstall": "MsiExec.exe /I{102C3B71-22B5-4484-8D1F-1C859CA6EE63}"},{"name": "CCC","version": "1.1.4","uninstall": "MsiExec.exe /I{D65355E4-021A-4B0C-B9A4-9D90F8C0D106}"}],"x64": [{"name": "AAAA (x64)","version": "24.01","uninstall": "'C:\\Program Files\\AAAA\\Uninstall.exe'"},{"name": "BBBB (2023)","version": "5.5.5.2811","uninstall": "MsiExec.exe /I{92EC01FE-5C8D-4D03-B8D1-F0A2AEF14EB3}"},{"name": "CCCC","version": "","uninstall": "C:\\Program Files\\CCCC\\CCCC_x64.exe -?uninstall"}]}}

期望输出JSON

{"name": "T15P-GEN3","software": {"x86": [{"name": "AAA","version": "1.3.4","uninstall": "MsiExec.exe /I{3A969900-CAD5-4FB8-B5D1-1F8D9028C6AA}","architecture": "x86"},{"name": "BBB","version": "1.1.2","uninstall": "MsiExec.exe /I{102C3B71-22B5-4484-8D1F-1C859CA6EE63}","architecture": "x86"},{"name": "CCC","version": "1.1.4","uninstall": "MsiExec.exe /I{D65355E4-021A-4B0C-B9A4-9D90F8C0D106}","architecture": "x86"}],"x64": [{"name": "AAAA (x64)","version": "24.01","uninstall": "'C:\\Program Files\\AAAA\\Uninstall.exe'","architecture": "x64"},{"name": "BBBB (2023)","version": "5.5.5.2811","uninstall": "MsiExec.exe /I{92EC01FE-5C8D-4D03-B8D1-F0A2AEF14EB3}","architecture": "x64"},{"name": "CCCC","version": "","uninstall": "C:\\Program Files\\CCCC\\CCCC_x64.exe -?uninstall","architecture": "x64"}]}}

错误规则分析

你尝试的JOLT规则存在两个问题:

  1. 未保留根节点的name属性,导致输出丢失该字段;
  2. 路径引用&3[].&写法错误,无法正确映射原数组结构,导致软件对象的结构混乱。

正确JOLT转换规则

[
  {
    "operation": "shift",
    "spec": {
      "name": "name",
      "software": {
        "*": {
          "*": {
            "@": "&3.&2[]",
            "$1": "&3.&2[].architecture"
          }
        }
      }
    }
  }
]

规则解释

  • "name": "name":直接保留根节点的name属性,避免数据丢失;
  • software下的*匹配x86、x64两个架构键,$1用于引用该键名,作为architecture属性的值;
  • 内层*匹配数组中的每个软件对象,@代表当前对象,&3.&2[]表示将对象映射到software.原架构键对应的数组中(&3对应software,&2对应当前架构键);
  • $1将上层架构键名(x86/x64)赋值给每个软件对象的architecture属性,实现需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:19:57