Трансформация толчка - заменить все совпадения - PullRequest
1 голос
/ 05 мая 2020

Я пытаюсь заставить работать преобразование JOLT, используя https://jolt-demo.appspot.com/.

Я хотел бы заменить все «основные» значения на «7,11».

Ввод:

{
  "build": [
    {
      "number": "7.11.13898",
      "branchName": "branch1"
    },
    {
      "number": "7.11.13896",
      "branchName": "branch2"
    },
    {
      "number": "7.11.13895",
      "branchName": "master"
    },
    {
      "number": "7.11.13900",
      "branchName": "master"
    }
  ]
}

Желаемый результат:

{
      "build": [
        {
          "number": "7.11.13898",
          "branchName": "branch1"
        },
        {
          "number": "7.11.13896",
          "branchName": "branch2"
        },
        {
          "number": "7.11.13895",
          "branchName": "7.11"
        },
        {
          "number": "7.11.13900",
          "branchName": "7.11"
        }
      ]
    }

Кажется, я не могу получить преобразование или сдвиг, которые работают без изменения / изменения структуры данных. Текущий подход:

[
  {
    "operation": "shift",
    "spec": {
      "build": {
        "*": {
          "number": "build[&1].number",
          "branchName": {
            "master": {
              "#7.11": "build[&3].branchName"
            },
            "*": {
              "@(2, branchName)": "build[&3].branchName"
            }
          }
        }
      }
    }
  }
]

Токовый выход:

 {
  "build" : [ {
    "number" : "7.11.13898"
  }, {
    "number" : "7.11.13896"
  }, {
    "branchName" : "7.11",
    "number" : "7.11.13895"
  } ]
}

1 Ответ

1 голос
/ 06 мая 2020

Вы почти нашли это. Вам нужно заменить @(2, branchName) на $, и это должно сработать для вас.

Оператор «$» означает использование клавиши ввода вместо значения ввода в качестве вывода.

Решение:

[
  {
    "operation": "shift",
    "spec": {
      "build": {
        "*": {
          "number": "build[&1].number",
          "branchName": {
            "master": {
              "#7.11": "build[&3].branchName"
            },
            "*": {
              "$": "build[&3].branchName"
            }
          }
        }
      }
    }
  }
]
...