【问题标题】:Using JOLT to split array based on an attirbute使用 JOLT 根据属性拆分数组
【发布时间】:2019-10-21 20:06:40
【问题描述】:

我正在尝试使用 JOLT 根据属性将数组拆分为多个数组。我尝试了 JOLT "Shift" 规范,但无法实现。

我查看了几个完成数组转换的链接,但我找不到将数组拆分为多个数组的任何方法。

示例: 根据属性“type”的值将以下数组转换为3个数组。

输入:

[
  {
    "name": "abc1",
    "address": "abcdef",
    "types": [
      "a",
      "b"
    ]
  },
  {
    "name": "abc2",
    "address": "abcdef2",
    "types": [
      "b",
      "c"
    ]
  },
  {
    "name": "abc3",
    "address": "abcdef3",
    "types": [
      "c"
    ]
  }
]

输出:

{
  "a": [
    {
      "name": "abc1",
      "address": "abcdef",
      "types": [
        "a",
        "b"
      ]
    }
  ],
  "b": [
    {
      "name": "abc1",
      "address": "abcdef",
      "types": [
        "a",
        "b"
      ]
    },
    {
      "name": "abc2",
      "address": "abcde2",
      "types": [
        "b",
        "c"
      ]
    }
  ],
  "c": [
    {
      "name": "abc2",
      "address": "abcde2",
      "types": [
        "b",
        "c"
      ]
    },
    {
      "name": "abc3",
      "address": "abcdef3",
      "types": [
        "c"
      ]
    }
  ]
}

【问题讨论】:

    标签: json jolt


    【解决方案1】:

    这将产生预期的结果:

    1. 对于类型中的每个元素
    2. 使用数组 (&1) 的值作为键
    3. 向上 3 级并将其复制为值 (@3)
    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "types": {
              "*": {
                "*": {
                  "@3": "&1"
                }
              }
            }
          }
        }
      }
    ]
    

    【讨论】:

      猜你喜欢
      • 2022-10-30
      • 2022-01-18
      • 2014-05-02
      • 1970-01-01
      • 2019-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      相关资源
      最近更新 更多