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

如何使用JOLT对二进制数组执行加法并转换为指定JSON结构?

JOLT二进制加法并拆分结果解决方案

输入数据

{
  "binaryarray": [
    "0100",
    "0010"
  ]
}

期望输出

{
  "field1" : 0,
  "field2" : 1,
  "field3" : 1,
  "field4" : 0
}

JOLT转换规范

[
  // 拆分二进制字符串为单字符数组
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "bits1": "=split('', @(1,binaryarray[0]))",
      "bits2": "=split('', @(1,binaryarray[1]))"
    }
  },
  // 将两个数组的对应位配对
  {
    "operation": "shift",
    "spec": {
      "bits1": {
        "*": {
          "@": "positions[&1][0]"
        }
      },
      "bits2": {
        "*": {
          "@": "positions[&1][1]"
        }
      }
    }
  },
  // 计算每一位的和(自动将字符转整数)
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "positions": {
        "*": {
          "sum": "=intSum(@(1,[0]), @(1,[1]))"
        }
      }
    }
  },
  // 将结果映射为指定字段
  {
    "operation": "shift",
    "spec": {
      "positions": {
        "0": {
          "sum": "field1"
        },
        "1": {
          "sum": "field2"
        },
        "2": {
          "sum": "field3"
        },
        "3": {
          "sum": "field4"
        }
      }
    }
  }
]

转换说明

  1. 拆分字符串:通过split('', ...)将每个二进制字符串拆分为单个字符组成的数组,方便逐位处理。
  2. 配对对应位:用shift操作把两个数组的同位置字符放到同一个子数组中,确保每一位的两个数字可以对应相加。
  3. 逐位求和:利用intSum函数将字符形式的数字转为整数并求和,得到每一位的计算结果。
  4. 映射为目标字段:将每一位的求和结果分别映射到field1至field4,与期望输出结构匹配。

注意事项

如果需要处理带进位的二进制加法(如两个二进制位相加结果大于1的情况),由于JOLT不支持循环迭代,需要手动定义进位传递逻辑,从最低位开始计算并将进位值传递到前一位,这种场景下的转换规范会更复杂,需要根据二进制字符串的长度定制处理步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:40:30