Json 使用 jolt 复制数组元素

Json array elements duplication using jolt

我想知道 jolt 是否可以处理以下转换:

{
  "interface": [
    {
      "field": "A",
      "ip": [
        "1.1.1.1",
        "1.1.1.2"
      ]
    },
    {
      "field": "B",
      "ip": [
        "1.1.1.3"
      ]
    }
  ]
}

{
  "interface": [
    {
      "field": "A",
      "ip": "1.1.1.1"
    },
    {
      "field": "A",
      "ip": "1.1.1.2"
    },
    {
      "field": "B",
      "ip": "1.1.1.3"
    }
  ]
}

即对于包含子数组的 JSON 数组,为其每个子数组项创建一个父项版本。

jolt 能做到吗?

这不是完整的答案,但也许能以某种方式帮助您或其他人可以提供帮助?

[
  {
    "operation": "shift",
    "spec": {
      "interface": {
        "*": {
          "ip": {
            "*": {
              "@": "ip",
              "@(2,field)": "field"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "ip": {
        "*": {
          "@": "interface[&1].ip",
          "@(2,field)": {
            "???": "interface[&2].field" // How to take proper index of an array?
          }
        }
      }
    }
  }
]

这可以通过两个阶段的转变来实现:

  1. 创建数组数组
  2. 然后将数组的数组展平
[
  {
    "operation": "shift",
    "spec": {
      "interface": {
        "*": {
          "ip": {
            "*": {
              "@": "[&3].[&1].ip",
              "@(2,field)": "[&3].[&1].field"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "interface.[]"
      }
    }
  }
]